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.
There are two functions in the
ClonesWithImmutableArgs
library that return address as a result of thekeccak256
function:clone3
andaddressOfClone3
. 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.