Make explicit the validity of the empty set in MerkleProof.sol (#5142)
This commit is contained in:
@ -168,6 +168,10 @@ library MerkleProof {
|
|||||||
* This version handles multiproofs in memory with the default hashing function.
|
* This version handles multiproofs in memory with the default hashing function.
|
||||||
*
|
*
|
||||||
* CAUTION: Not all Merkle trees admit multiproofs. See {processMultiProof} for details.
|
* CAUTION: Not all Merkle trees admit multiproofs. See {processMultiProof} for details.
|
||||||
|
*
|
||||||
|
* NOTE: The _empty set_ (i.e. the case where `proof.length == 0 && leaves.length == 0`) is considered a noop,
|
||||||
|
* and therefore a valid multiproof (i.e. it returns `true`). Consider disallowing this case if you're not
|
||||||
|
* validating the leaves elsewhere.
|
||||||
*/
|
*/
|
||||||
function multiProofVerify(
|
function multiProofVerify(
|
||||||
bytes32[] memory proof,
|
bytes32[] memory proof,
|
||||||
@ -247,6 +251,10 @@ library MerkleProof {
|
|||||||
* This version handles multiproofs in memory with a custom hashing function.
|
* This version handles multiproofs in memory with a custom hashing function.
|
||||||
*
|
*
|
||||||
* CAUTION: Not all Merkle trees admit multiproofs. See {processMultiProof} for details.
|
* CAUTION: Not all Merkle trees admit multiproofs. See {processMultiProof} for details.
|
||||||
|
*
|
||||||
|
* NOTE: The _empty set_ (i.e. the case where `proof.length == 0 && leaves.length == 0`) is considered a noop,
|
||||||
|
* and therefore a valid multiproof (i.e. it returns `true`). Consider disallowing this case if you're not
|
||||||
|
* validating the leaves elsewhere.
|
||||||
*/
|
*/
|
||||||
function multiProofVerify(
|
function multiProofVerify(
|
||||||
bytes32[] memory proof,
|
bytes32[] memory proof,
|
||||||
@ -328,6 +336,10 @@ library MerkleProof {
|
|||||||
* This version handles multiproofs in calldata with the default hashing function.
|
* This version handles multiproofs in calldata with the default hashing function.
|
||||||
*
|
*
|
||||||
* CAUTION: Not all Merkle trees admit multiproofs. See {processMultiProof} for details.
|
* CAUTION: Not all Merkle trees admit multiproofs. See {processMultiProof} for details.
|
||||||
|
*
|
||||||
|
* NOTE: The _empty set_ (i.e. the case where `proof.length == 0 && leaves.length == 0`) is considered a noop,
|
||||||
|
* and therefore a valid multiproof (i.e. it returns `true`). Consider disallowing this case if you're not
|
||||||
|
* validating the leaves elsewhere.
|
||||||
*/
|
*/
|
||||||
function multiProofVerifyCalldata(
|
function multiProofVerifyCalldata(
|
||||||
bytes32[] calldata proof,
|
bytes32[] calldata proof,
|
||||||
@ -407,6 +419,10 @@ library MerkleProof {
|
|||||||
* This version handles multiproofs in calldata with a custom hashing function.
|
* This version handles multiproofs in calldata with a custom hashing function.
|
||||||
*
|
*
|
||||||
* CAUTION: Not all Merkle trees admit multiproofs. See {processMultiProof} for details.
|
* CAUTION: Not all Merkle trees admit multiproofs. See {processMultiProof} for details.
|
||||||
|
*
|
||||||
|
* NOTE: The _empty set_ (i.e. the case where `proof.length == 0 && leaves.length == 0`) is considered a noop,
|
||||||
|
* and therefore a valid multiproof (i.e. it returns `true`). Consider disallowing this case if you're not
|
||||||
|
* validating the leaves elsewhere.
|
||||||
*/
|
*/
|
||||||
function multiProofVerifyCalldata(
|
function multiProofVerifyCalldata(
|
||||||
bytes32[] calldata proof,
|
bytes32[] calldata proof,
|
||||||
|
|||||||
@ -88,6 +88,10 @@ const templateMultiProof = ({ suffix, location, visibility, hash }) => `\
|
|||||||
* This version handles multiproofs in ${location} with ${hash ? 'a custom' : 'the default'} hashing function.
|
* This version handles multiproofs in ${location} with ${hash ? 'a custom' : 'the default'} hashing function.
|
||||||
*
|
*
|
||||||
* CAUTION: Not all Merkle trees admit multiproofs. See {processMultiProof} for details.
|
* CAUTION: Not all Merkle trees admit multiproofs. See {processMultiProof} for details.
|
||||||
|
*
|
||||||
|
* NOTE: The _empty set_ (i.e. the case where \`proof.length == 0 && leaves.length == 0\`) is considered a noop,
|
||||||
|
* and therefore a valid multiproof (i.e. it returns \`true\`). Consider disallowing this case if you're not
|
||||||
|
* validating the leaves elsewhere.
|
||||||
*/
|
*/
|
||||||
function multiProofVerify${suffix}(${formatArgsMultiline(
|
function multiProofVerify${suffix}(${formatArgsMultiline(
|
||||||
`bytes32[] ${location} proof`,
|
`bytes32[] ${location} proof`,
|
||||||
|
|||||||
Reference in New Issue
Block a user