Skip to content

Commit 25f266a

Browse files
authored
Fix comments from chain security 2nd audit (Draft)
- remove comments describing reserve Id first byte as being reserve type. - remove unused file import in kyberDao. - move setDecimals call to avoid un necessary trigger. - remove rateWithNetworkFee from TradeData struct. since its is unused - fix revert message for reward + rebate limit - remove unused 'bool add' from event AddReserveToStorage - align casting for reserveId 0. from '0' --> 'bytes32(0)'
2 parents 3c0e0c6 + c4cf84c commit 25f266a

File tree

6 files changed

+12
-16
lines changed

6 files changed

+12
-16
lines changed

contracts/sol6/Dao/KyberDao.sol

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@ import "../IERC20.sol";
77
import "../IKyberDao.sol";
88
import "../utils/zeppelin/ReentrancyGuard.sol";
99
import "../utils/Utils5.sol";
10-
import "../IKyberFeeHandler.sol";
11-
1210

1311
/**
1412
* @notice This contract is using SafeMath for uint, which is inherited from EpochUtils
@@ -719,7 +717,7 @@ contract KyberDao is IKyberDao, EpochUtils, ReentrancyGuard, Utils5, DaoOperator
719717
getRebateAndRewardFromData(options[i]);
720718
require(
721719
rewardInBps.add(rebateInBps) <= BPS,
722-
"validateParams: rebate + reward must be smaller then BPS"
720+
"validateParams: rebate + reward can't be bigger than BPS"
723721
);
724722
}
725723
}

contracts/sol6/KyberMatchingEngine.sol

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ contract KyberMatchingEngine is KyberHintHandler, IKyberMatchingEngine, Withdraw
5959
/// @param dest Destination token
6060
/// @param isTokenToToken Whether the trade is token -> token
6161
/// @param hint Advanced instructions for running the trade
62-
/// @return reserveIds Array of reserve IDs for the trade, each being 32 bytes. 1st byte is reserve type
62+
/// @return reserveIds Array of reserve IDs for the trade, each being 32 bytes
6363
/// @return splitValuesBps Array of split values (in basis points) for the trade
6464
/// @return processWithRate Enum ProcessWithRate, whether extra processing is required or not
6565
function getTradingReserves(

contracts/sol6/KyberNetwork.sol

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,6 @@ contract KyberNetwork is WithdrawableNoModifiers, Utils5, IKyberNetwork, Reentra
7575
uint256 numEntitledRebateReserves;
7676
uint256 feeAccountedBps; // what part of this trade is fee paying. for token -> token - up to 200%
7777
uint256 entitledRebateBps;
78-
uint256 rateWithNetworkFee;
7978
}
8079

8180
struct TradeInput {
@@ -227,10 +226,10 @@ contract KyberNetwork is WithdrawableNoModifiers, Utils5, IKyberNetwork, Reentra
227226

228227
if (add) {
229228
token.safeApprove(reserve, 2**255);
229+
setDecimals(token);
230230
} else {
231231
token.safeApprove(reserve, 0);
232232
}
233-
setDecimals(token);
234233
}
235234

236235
/// @notice Can be called only by operator
@@ -266,6 +265,7 @@ contract KyberNetwork is WithdrawableNoModifiers, Utils5, IKyberNetwork, Reentra
266265
for(uint i = 0; i < reserves.length; i++) {
267266
if (add) {
268267
token.safeApprove(reserves[i], 2**255);
268+
setDecimals(token);
269269
} else {
270270
token.safeApprove(reserves[i], 0);
271271
}

contracts/sol6/KyberStorage.sol

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,7 @@ contract KyberStorage is IKyberStorage, PermissionGroupsNoModifiers, Utils5 {
6969
address indexed reserve,
7070
bytes32 indexed reserveId,
7171
IKyberStorage.ReserveType reserveType,
72-
address indexed rebateWallet,
73-
bool add
72+
address indexed rebateWallet
7473
);
7574

7675
event ReserveRebateWalletSet(
@@ -126,7 +125,7 @@ contract KyberStorage is IKyberStorage, PermissionGroupsNoModifiers, Utils5 {
126125
/// @notice Can be called only by operator
127126
/// @dev Adds a reserve to the storage
128127
/// @param reserve The reserve address
129-
/// @param reserveId The reserve ID in 32 bytes. 1st byte is reserve type
128+
/// @param reserveId The reserve ID in 32 bytes.
130129
/// @param resType Type of the reserve out of enum ReserveType
131130
/// @param rebateWallet Rebate wallet address for this reserve
132131
function addReserve(
@@ -137,7 +136,7 @@ contract KyberStorage is IKyberStorage, PermissionGroupsNoModifiers, Utils5 {
137136
) external {
138137
onlyOperator();
139138
require(reserveAddressToId[reserve] == bytes32(0), "reserve has id");
140-
require(reserveId != 0, "reserveId = 0");
139+
require(reserveId != bytes32(0), "reserveId = 0");
141140
require(
142141
(resType != ReserveType.NONE) && (uint256(resType) < uint256(ReserveType.LAST)),
143142
"bad reserve type"
@@ -160,7 +159,7 @@ contract KyberStorage is IKyberStorage, PermissionGroupsNoModifiers, Utils5 {
160159
reserveAddressToId[reserve] = reserveId;
161160
reserveType[reserveId] = uint256(resType);
162161

163-
emit AddReserveToStorage(reserve, reserveId, resType, rebateWallet, true);
162+
emit AddReserveToStorage(reserve, reserveId, resType, rebateWallet);
164163
emit ReserveRebateWalletSet(reserveId, rebateWallet);
165164
}
166165

@@ -500,7 +499,7 @@ contract KyberStorage is IKyberStorage, PermissionGroupsNoModifiers, Utils5 {
500499
}
501500

502501
/// @notice Returns information about a reserve given its reserve ID
503-
/// @return reserveId The reserve ID in 32 bytes. 1st byte is reserve type
502+
/// @return reserveId The reserve ID in 32 bytes.
504503
/// @return rebateWallet address of rebate wallet of this reserve
505504
/// @return resType Reserve type from enum ReserveType
506505
/// @return isFeeAccountedFlag Whether fees are to be charged for the trade for this reserve

test/sol6/kyberDao.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1390,14 +1390,14 @@ contract('KyberDao', function(accounts) {
13901390
2, currentBlock + 15, currentBlock + 15 + minCampPeriod, minPercentageInPrecision, cInPrecision, tInPrecision,
13911391
[1, getDataFromRebateAndReward(100, 10001 - 100), 2, 3], '0x', {from: daoOperator}
13921392
),
1393-
"validateParams: rebate + reward must be smaller then BPS"
1393+
"validateParams: rebate + reward can't be bigger than BPS"
13941394
)
13951395
await expectRevert(
13961396
submitNewCampaign(kyberDao,
13971397
2, currentBlock + 17, currentBlock + 17 + minCampPeriod, minPercentageInPrecision, cInPrecision, tInPrecision,
13981398
[1, 2, getDataFromRebateAndReward(20, 10000)], '0x', {from: daoOperator}
13991399
),
1400-
"validateParams: rebate + reward must be smaller then BPS"
1400+
"validateParams: rebate + reward can't be bigger than BPS"
14011401
)
14021402
await submitNewCampaign(kyberDao,
14031403
2, currentBlock + 19, currentBlock + 19 + minCampPeriod, minPercentageInPrecision, cInPrecision, tInPrecision,

test/sol6/kyberStorage.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -275,8 +275,7 @@ contract('KyberStorage', function(accounts) {
275275
reserve: mockReserve.address,
276276
reserveId: nwHelper.genReserveID(MOCK_ID, mockReserve.address).toLowerCase(),
277277
reserveType: new BN(ReserveType.FPR),
278-
rebateWallet: anyWallet,
279-
add: true
278+
rebateWallet: anyWallet
280279
});
281280
expectEvent(txResult, 'ReserveRebateWalletSet', {
282281
reserveId: nwHelper.genReserveID(MOCK_ID, mockReserve.address).toLowerCase(),

0 commit comments

Comments
 (0)