wighawag / clones-with-immutable-args

BSD 3-Clause "New" or "Revised" License
229 stars 44 forks source link

Clean up `clone3` return value #23

Closed byshape closed 9 months ago

byshape commented 9 months ago

There are two functions in the ClonesWithImmutableArgs library that return address as a result of the keccak256 function: clone3 and addressOfClone3. Unmasked, this results in invalid value if used later in assembly code block.

Imagine that the clone3 function is used to create a clone and then its address is passed to another function that makes a call using that address as a parameter. If this assembly code, such as library, doesn’t clear the address, then this “address” will be invalid and the call will fail.

I suggest masking the result of the keccak256 function to avoid possible problems with address usage.

P.S. In the commit, you can see a couple of tests that should fail when run on the production code without the suggested changes.

wighawag commented 9 months ago

make sense, thanks for the PR!