Skip to content

Commit 52a7ca4

Browse files
committed
Fixed verifyTransfer
1 parent fd7a2a5 commit 52a7ca4

File tree

1 file changed

+23
-15
lines changed

1 file changed

+23
-15
lines changed

contracts/tokens/SecurityToken.sol

Lines changed: 23 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -543,25 +543,33 @@ contract SecurityToken is StandardToken, DetailedERC20, ReentrancyGuard, Registr
543543
)
544544
internal
545545
checkGranularity(_value)
546-
returns (bool validTransfer)
546+
returns (bool)
547547
{
548-
if (transfersFrozen)
549-
return false;
550-
551-
validTransfer = true;
552-
address module;
553-
554-
for (uint256 i = 0; i < modules[TRANSFER_KEY].length; i++) {
555-
module = modules[TRANSFER_KEY][i];
556-
if (!modulesToData[module].isArchived) {
557-
ITransferManager.Result valid = ITransferManager(module).verifyTransfer(_from, _to, _value, _data, _isTransfer);
558-
if (valid == ITransferManager.Result.INVALID) {
559-
validTransfer = false;
560-
} else if (valid == ITransferManager.Result.FORCE_VALID) {
561-
return true;
548+
if (!transfersFrozen) {
549+
if (modules[TRANSFER_KEY].length == 0)
550+
return true;
551+
552+
bool isValid;
553+
bool isInvalid;
554+
address module;
555+
556+
for (uint256 i = 0; i < modules[TRANSFER_KEY].length; i++) {
557+
module = modules[TRANSFER_KEY][i];
558+
if (!modulesToData[module].isArchived) {
559+
ITransferManager.Result valid = ITransferManager(module).verifyTransfer(_from, _to, _value, _data, _isTransfer);
560+
if (valid == ITransferManager.Result.INVALID) {
561+
isInvalid = true;
562+
} else if (valid == ITransferManager.Result.VALID) {
563+
isValid = true;
564+
} else if (valid == ITransferManager.Result.FORCE_VALID) {
565+
return true;
566+
}
562567
}
563568
}
569+
if (isValid && !isInvalid)
570+
return true;
564571
}
572+
return false;
565573
}
566574

567575
/**

0 commit comments

Comments
 (0)