CleaningAndScriptForAllAndReadme
This commit is contained in:
@ -1,31 +0,0 @@
|
||||
definition knownAsNonPrivileged(method f) returns bool = false
|
||||
/* ( f.selector == isWhitelistedOtoken(address).selector ||
|
||||
f.selector == isWhitelistedProduct(address,address,address,bool).selector ||
|
||||
f.selector == owner().selector ||
|
||||
f.selector == isWhitelistedCallee(address).selector ||
|
||||
f.selector == whitelistOtoken(address).selector ||
|
||||
f.selector == addressBook().selector ||
|
||||
f.selector == isWhitelistedCollateral(address).selector )*/;
|
||||
|
||||
|
||||
|
||||
rule privilegedOperation(method f, address privileged)
|
||||
description "$f can be called by more than one user without reverting"
|
||||
{
|
||||
env e1;
|
||||
calldataarg arg;
|
||||
require !knownAsNonPrivileged(f);
|
||||
require e1.msg.sender == privileged;
|
||||
|
||||
storage initialStorage = lastStorage;
|
||||
invoke f(e1, arg); // privileged succeeds executing candidate privileged operation.
|
||||
bool firstSucceeded = !lastReverted;
|
||||
|
||||
env e2;
|
||||
calldataarg arg2;
|
||||
require e2.msg.sender != privileged;
|
||||
invoke f(e2, arg2) at initialStorage; // unprivileged
|
||||
bool secondSucceeded = !lastReverted;
|
||||
|
||||
assert !(firstSucceeded && secondSucceeded), "${f.selector} can be called by both ${e1.msg.sender} and ${e2.msg.sender}, so it is not privileged";
|
||||
}
|
||||
Reference in New Issue
Block a user