@@ -155,11 +155,10 @@ library InteroperableAddress {
155155 chainReference = self.slice (0x05 , 0x05 + chainReferenceLength);
156156
157157 uint256 addrLength = uint8 (self[0x05 + chainReferenceLength]);
158- if (
159- (self.length < 0x06 + chainReferenceLength + addrLength) ||
160- (failOnExtraBytes && self.length > 0x06 + chainReferenceLength + addrLength)
161- ) return (false , 0x0000 , _emptyBytesMemory (), _emptyBytesMemory ());
162- addr = self.slice (0x06 + chainReferenceLength, 0x06 + chainReferenceLength + addrLength);
158+ uint256 expectedLength = 0x06 + chainReferenceLength + addrLength;
159+ if ((self.length < expectedLength) || (failOnExtraBytes && self.length > expectedLength))
160+ return (false , 0x0000 , _emptyBytesMemory (), _emptyBytesMemory ());
161+ addr = self.slice (0x06 + chainReferenceLength, expectedLength);
163162
164163 // At least one of chainReference or addr must be non-empty
165164 success = (chainReferenceLength > 0 ) || (addrLength > 0 );
@@ -197,11 +196,10 @@ library InteroperableAddress {
197196 chainReference = self[0x05 :0x05 + chainReferenceLength];
198197
199198 uint256 addrLength = uint8 (self[0x05 + chainReferenceLength]);
200- if (
201- (self.length < 0x06 + chainReferenceLength + addrLength) ||
202- (failOnExtraBytes && self.length > 0x06 + chainReferenceLength + addrLength)
203- ) return (false , 0x0000 , Calldata.emptyBytes (), Calldata.emptyBytes ());
204- addr = self[0x06 + chainReferenceLength:0x06 + chainReferenceLength + addrLength];
199+ uint256 expectedLength = 0x06 + chainReferenceLength + addrLength;
200+ if ((self.length < expectedLength) || (failOnExtraBytes && self.length > expectedLength))
201+ return (false , 0x0000 , Calldata.emptyBytes (), Calldata.emptyBytes ());
202+ addr = self[0x06 + chainReferenceLength:expectedLength];
205203
206204 // At least one of chainReference or addr must be non-empty
207205 success = (chainReferenceLength > 0 ) || (addrLength > 0 );
0 commit comments