@@ -122,8 +122,8 @@ library CosignerExtraDataLib {
122
122
uint256 bytesOffset = 33 ;
123
123
124
124
if (hasExclusiveFiller (extraData)) {
125
- // an address is 20 bytes long
126
- require (extraData.length >= bytesOffset + 20 );
125
+ // + 20 bytes for address, - 32 bytes for the length offset
126
+ require (extraData.length >= bytesOffset - 12 );
127
127
assembly {
128
128
// it loads a full 32 bytes, shift right 96 bits so only the address remains
129
129
filler := shr (96 , mload (add (extraData, bytesOffset)))
@@ -132,8 +132,8 @@ library CosignerExtraDataLib {
132
132
}
133
133
134
134
if (hasInputOverride (extraData)) {
135
- // a uint256 is 32 bytes long, so we just load the next 32 bytes
136
- require (extraData.length >= bytesOffset + 32 );
135
+ // + 32 bytes for uint256, - 32 bytes for the length offset
136
+ require (extraData.length >= bytesOffset);
137
137
assembly {
138
138
inputOverride := mload (add (extraData, bytesOffset))
139
139
}
@@ -148,7 +148,7 @@ library CosignerExtraDataLib {
148
148
}
149
149
bytesOffset += 32 ;
150
150
151
- // each element of the array is 32 bytes
151
+ // each element of the array is 32 bytes, - 32 bytes for the length offset
152
152
require (extraData.length == bytesOffset + (length - 1 ) * 32 );
153
153
outputOverrides = new uint256 [](length);
154
154
0 commit comments