@@ -14,6 +14,13 @@ namespace xrpl {
1414namespace test {
1515namespace jtx {
1616
17+ auto makeZeroBuffer = [](size_t size) {
18+ Buffer b (size);
19+ if (size > 0 )
20+ std::memset (b.data (), 0 , size);
21+ return b;
22+ };
23+
1724void
1825mptflags::operator ()(Env& env) const
1926{
@@ -909,12 +916,12 @@ MPTTester::getConvertBackProof(
909916
910917 auto const sleMptoken = env_.le (keylet::mptoken (*id_, holder.id ()));
911918 if (!sleMptoken || !sleMptoken->isFieldPresent (sfConfidentialBalanceSpending))
912- return Buffer (expectedProofLength);
919+ return makeZeroBuffer (expectedProofLength);
913920
914921 auto const holderPubKey = getPubKey (holder);
915922
916923 if (!holderPubKey)
917- return Buffer (expectedProofLength);
924+ return makeZeroBuffer (expectedProofLength);
918925
919926 Buffer const pedersenProof = getBalanceLinkageProof (holder, contextHash, *holderPubKey, pcParams);
920927
@@ -1063,7 +1070,7 @@ MPTTester::convert(MPTConvert const& arg)
10631070 if (proof)
10641071 jv[sfZKProof.jsonName ] = strHex (*proof);
10651072 else
1066- jv[sfZKProof.jsonName ] = strHex (Buffer (ecSchnorrProofLength));
1073+ jv[sfZKProof.jsonName ] = strHex (makeZeroBuffer (ecSchnorrProofLength));
10671074 }
10681075
10691076 auto const holderAmt = getBalance (*arg.account );
@@ -1321,7 +1328,7 @@ MPTTester::send(MPTConfidentialSend const& arg)
13211328 size_t const sizeEquality = secp256k1_mpt_prove_same_plaintext_multi_size (nRecipients);
13221329 size_t const dummySize = sizeEquality + 2 * ecPedersenProofLength + ecDoubleBulletproofLength;
13231330
1324- jv[sfZKProof.jsonName ] = strHex (Buffer (dummySize));
1331+ jv[sfZKProof.jsonName ] = strHex (makeZeroBuffer (dummySize));
13251332 }
13261333 }
13271334
@@ -1438,7 +1445,7 @@ MPTTester::confidentialClaw(MPTConfidentialClawback const& arg)
14381445 if (proof)
14391446 jv[sfZKProof] = strHex (*proof);
14401447 else
1441- jv[sfZKProof] = strHex (Buffer (ecEqualityProofLength));
1448+ jv[sfZKProof] = strHex (makeZeroBuffer (ecEqualityProofLength));
14421449 }
14431450
14441451 auto const holderPubAmt = getBalance (*arg.holder );
@@ -1524,7 +1531,7 @@ MPTTester::encryptAmount(Account const& account, uint64_t const amt, Buffer cons
15241531
15251532 // Return a dummy buffer on failure to allow testing of
15261533 // failures that occur prior to encryption.
1527- return Buffer (ecGamalEncryptedTotalLength);
1534+ return makeZeroBuffer (ecGamalEncryptedTotalLength);
15281535}
15291536
15301537std::optional<uint64_t >
@@ -1715,7 +1722,7 @@ MPTTester::convertBack(MPTConvertBack const& arg)
17151722 // generate a dummy proof if no encrypted amount field, so that other
17161723 // preflight/preclaim are checked
17171724 if (!prevEncryptedSpendingBalance)
1718- proof = Buffer (ecPedersenProofLength + ecSingleBulletproofLength);
1725+ proof = makeZeroBuffer (ecPedersenProofLength + ecSingleBulletproofLength);
17191726 else
17201727 {
17211728 proof = getConvertBackProof (
@@ -1794,7 +1801,7 @@ MPTTester::getAmountLinkageProof(
17941801 if (params.blindingFactor .size () != ecBlindingFactorLength ||
17951802 params.pedersenCommitment .size () != ecPedersenCommitmentLength || pubKey.size () != ecPubKeyLength ||
17961803 params.encryptedAmt .size () != ecGamalEncryptedTotalLength || blindingFactor.size () != ecBlindingFactorLength)
1797- return Buffer (ecPedersenProofLength);
1804+ return makeZeroBuffer (ecPedersenProofLength);
17981805
17991806 secp256k1_pubkey c1, c2;
18001807 auto const ctx = secp256k1Context ();
@@ -1842,15 +1849,15 @@ MPTTester::getBalanceLinkageProof(
18421849 if (params.blindingFactor .size () != ecBlindingFactorLength ||
18431850 params.pedersenCommitment .size () != ecPedersenCommitmentLength || pubKey.size () != ecPubKeyLength ||
18441851 params.encryptedAmt .size () != ecGamalEncryptedTotalLength)
1845- return Buffer (ecPedersenProofLength);
1852+ return makeZeroBuffer (ecPedersenProofLength);
18461853
18471854 secp256k1_pubkey c1, c2;
18481855 auto const ctx = secp256k1Context ();
18491856 if (!secp256k1_ec_pubkey_parse (ctx, &c1, params.encryptedAmt .data (), ecGamalEncryptedLength) ||
18501857 !secp256k1_ec_pubkey_parse (
18511858 ctx, &c2, params.encryptedAmt .data () + ecGamalEncryptedLength, ecGamalEncryptedLength))
18521859 {
1853- return Buffer (ecPedersenProofLength);
1860+ return makeZeroBuffer (ecPedersenProofLength);
18541861 }
18551862
18561863 secp256k1_pubkey pk;
0 commit comments