From 292e502a7379c49ae34a062ab846d392acf7e8ba Mon Sep 17 00:00:00 2001 From: Jun Luo <4catcode@gmail.com> Date: Sun, 21 Jul 2024 10:35:19 +0800 Subject: [PATCH] add fuzz corpus --- .github/workflows/cflite_batch.yml | 41 +++++++---- .github/workflows/cflite_pr.yml | 25 +++---- fuzz/CMakeLists.txt | 6 ++ fuzz/corpus/feeBumpTx.raw | Bin 0 -> 444 bytes .../feeBumpTxOmitFeeSourceEqualSigner.raw | Bin 0 -> 312 bytes .../feeBumpTxOmitFeeSourceNotEqualSigner.raw | Bin 0 -> 312 bytes ...feeBumpTxOmitMuxedFeeSourceEqualSigner.raw | Bin 0 -> 320 bytes fuzz/corpus/feeBumpTxWithMuxedFeeSource.raw | Bin 0 -> 524 bytes fuzz/corpus/opAccountMerge.raw | Bin 0 -> 212 bytes .../opAccountMergeWithMuxedDestination.raw | Bin 0 -> 220 bytes fuzz/corpus/opAllowTrustAuthorize.raw | Bin 0 -> 224 bytes ...lowTrustAuthorizeToMaintainLiabilities.raw | Bin 0 -> 224 bytes fuzz/corpus/opAllowTrustDeauthorize.raw | Bin 0 -> 224 bytes .../opBeginSponsoringFutureReserves.raw | Bin 0 -> 212 bytes fuzz/corpus/opBumpSequence.raw | Bin 0 -> 184 bytes fuzz/corpus/opChangeTrustAddTrustLine.raw | Bin 0 -> 228 bytes fuzz/corpus/opChangeTrustRemoveTrustLine.raw | Bin 0 -> 228 bytes ...rustWithLiquidityPoolAssetAddTrustLine.raw | Bin 0 -> 284 bytes ...tWithLiquidityPoolAssetRemoveTrustLine.raw | Bin 0 -> 284 bytes fuzz/corpus/opClaimClaimableBalance.raw | Bin 0 -> 212 bytes fuzz/corpus/opClawback.raw | Bin 0 -> 264 bytes fuzz/corpus/opClawbackClaimableBalance.raw | Bin 0 -> 212 bytes fuzz/corpus/opClawbackWithMuxedFrom.raw | Bin 0 -> 272 bytes fuzz/corpus/opCreateAccount.raw | Bin 0 -> 220 bytes fuzz/corpus/opCreateClaimableBalance.raw | Bin 0 -> 376 bytes fuzz/corpus/opCreatePassiveSellOffer.raw | Bin 0 -> 240 bytes fuzz/corpus/opEndSponsoringFutureReserves.raw | Bin 0 -> 176 bytes fuzz/corpus/opExtendFootprintTtl.raw | Bin 0 -> 196 bytes fuzz/corpus/opInflation.raw | Bin 0 -> 176 bytes .../opInvokeHostFunctionApproveUsdc.raw | Bin 0 -> 800 bytes .../opInvokeHostFunctionAssetApprove.raw | Bin 0 -> 800 bytes .../opInvokeHostFunctionAssetTransfer.raw | Bin 0 -> 660 bytes ...vokeHostFunctionCreateContractNewAsset.raw | Bin 0 -> 420 bytes ...InvokeHostFunctionCreateContractWasmId.raw | Bin 0 -> 468 bytes ...okeHostFunctionCreateContractWrapAsset.raw | Bin 0 -> 256 bytes .../opInvokeHostFunctionScvalsCase0.raw | Bin 0 -> 256 bytes .../opInvokeHostFunctionScvalsCase1.raw | Bin 0 -> 412 bytes .../opInvokeHostFunctionScvalsCase2.raw | Bin 0 -> 440 bytes .../corpus/opInvokeHostFunctionTestPlugin.raw | Bin 0 -> 336 bytes .../opInvokeHostFunctionTransferUsdc.raw | Bin 0 -> 712 bytes .../opInvokeHostFunctionTransferXlm.raw | Bin 0 -> 624 bytes .../corpus/opInvokeHostFunctionUploadWasm.raw | Bin 0 -> 812 bytes fuzz/corpus/opInvokeHostFunctionWithAuth.raw | Bin 0 -> 1008 bytes .../opInvokeHostFunctionWithAuthAndNoArgs.raw | Bin 0 -> 744 bytes ...stFunctionWithAuthAndNoArgsAndNoSource.raw | Bin 0 -> 708 bytes ...keHostFunctionWithComplexSubInvocation.raw | Bin 0 -> 1072 bytes .../opInvokeHostFunctionWithoutArgs.raw | Bin 0 -> 288 bytes ...vokeHostFunctionWithoutAuthAndNoSource.raw | Bin 0 -> 184 bytes fuzz/corpus/opLiquidityPoolDeposit.raw | Bin 0 -> 240 bytes fuzz/corpus/opLiquidityPoolWithdraw.raw | Bin 0 -> 232 bytes fuzz/corpus/opManageBuyOfferCreate.raw | Bin 0 -> 248 bytes fuzz/corpus/opManageBuyOfferDelete.raw | Bin 0 -> 248 bytes fuzz/corpus/opManageBuyOfferUpdate.raw | Bin 0 -> 248 bytes fuzz/corpus/opManageDataAdd.raw | Bin 0 -> 316 bytes .../opManageDataAddWithUnprintableData.raw | Bin 0 -> 280 bytes fuzz/corpus/opManageDataRemove.raw | Bin 0 -> 248 bytes fuzz/corpus/opManageSellOfferCreate.raw | Bin 0 -> 248 bytes fuzz/corpus/opManageSellOfferDelete.raw | Bin 0 -> 248 bytes fuzz/corpus/opManageSellOfferUpdate.raw | Bin 0 -> 248 bytes fuzz/corpus/opPathPaymentStrictReceive.raw | Bin 0 -> 376 bytes ...pPathPaymentStrictReceiveWithEmptyPath.raw | Bin 0 -> 280 bytes ...ymentStrictReceiveWithMuxedDestination.raw | Bin 0 -> 384 bytes fuzz/corpus/opPathPaymentStrictSend.raw | Bin 0 -> 376 bytes .../opPathPaymentStrictSendWithEmptyPath.raw | Bin 0 -> 280 bytes ...hPaymentStrictSendWithMuxedDestination.raw | Bin 0 -> 384 bytes fuzz/corpus/opPaymentAssetAlphanum12.raw | Bin 0 -> 272 bytes fuzz/corpus/opPaymentAssetAlphanum4.raw | Bin 0 -> 264 bytes fuzz/corpus/opPaymentAssetNative.raw | Bin 0 -> 224 bytes fuzz/corpus/opPaymentWithMuxedDestination.raw | Bin 0 -> 232 bytes fuzz/corpus/opRestoreFootprint.raw | Bin 0 -> 180 bytes fuzz/corpus/opRevokeSponsorshipAccount.raw | Bin 0 -> 220 bytes .../opRevokeSponsorshipClaimableBalance.raw | Bin 0 -> 220 bytes fuzz/corpus/opRevokeSponsorshipData.raw | Bin 0 -> 288 bytes ...evokeSponsorshipEd25519PublicKeySigner.raw | Bin 0 -> 252 bytes .../corpus/opRevokeSponsorshipHashXSigner.raw | Bin 0 -> 252 bytes .../opRevokeSponsorshipLiquidityPool.raw | Bin 0 -> 216 bytes fuzz/corpus/opRevokeSponsorshipOffer.raw | Bin 0 -> 228 bytes .../opRevokeSponsorshipPreAuthTxSigner.raw | Bin 0 -> 252 bytes .../opRevokeSponsorshipTrustLineWithAsset.raw | Bin 0 -> 264 bytes ...ponsorshipTrustLineWithLiquidityPoolId.raw | Bin 0 -> 256 bytes fuzz/corpus/opSetOptions.raw | Bin 0 -> 328 bytes ...etOptionsAddEd25519SignerPayloadSigner.raw | Bin 0 -> 320 bytes fuzz/corpus/opSetOptionsAddHashXSigner.raw | Bin 0 -> 252 bytes .../corpus/opSetOptionsAddPreAuthTxSigner.raw | Bin 0 -> 252 bytes .../corpus/opSetOptionsAddPublicKeySigner.raw | Bin 0 -> 252 bytes ...ptionsRemoveEd25519SignerPayloadSigner.raw | Bin 0 -> 320 bytes fuzz/corpus/opSetOptionsRemoveHashXSigner.raw | Bin 0 -> 252 bytes .../opSetOptionsRemovePreAuthTxSigner.raw | Bin 0 -> 252 bytes .../opSetOptionsRemovePublicKeySigner.raw | Bin 0 -> 252 bytes fuzz/corpus/opSetOptionsWithEmptyBody.raw | Bin 0 -> 212 bytes fuzz/corpus/opSetTrustLineFlagsAuthorized.raw | Bin 0 -> 264 bytes ...tLineFlagsAuthorizedAndClawbackEnabled.raw | Bin 0 -> 264 bytes ...neFlagsAuthorizedToMaintainLiabilities.raw | Bin 0 -> 264 bytes .../opSetTrustLineFlagsUnauthorized.raw | Bin 0 -> 264 bytes ...mitOpSourceEqualSignerNotEqualTxSource.raw | Bin 0 -> 184 bytes ...xedSourceEqualOpMuxedSourceEqualSigner.raw | Bin 0 -> 200 bytes ...tTxMuxedSourceEqualOpSourceEqualSigner.raw | Bin 0 -> 192 bytes ...tTxSourceEqualOpMuxedSourceEqualSigner.raw | Bin 0 -> 192 bytes ...ceOmitTxSourceEqualOpSourceEqualSigner.raw | Bin 0 -> 184 bytes ...mitTxSourceEqualOpSourceNotEqualSigner.raw | Bin 0 -> 184 bytes ...mitTxSourceEqualSignerNotEqualOpSource.raw | Bin 0 -> 184 bytes fuzz/corpus/opWithEmptySource.raw | Bin 0 -> 188 bytes fuzz/corpus/opWithMuxedSource.raw | Bin 0 -> 232 bytes .../corpus/sorobanAuthCreateSmartContract.raw | Bin 0 -> 168 bytes fuzz/corpus/sorobanAuthInvokeContract.raw | Bin 0 -> 552 bytes .../sorobanAuthInvokeContractTestPlugin.raw | Bin 0 -> 552 bytes ...InvokeContractWithComplexSubInvocation.raw | Bin 0 -> 1008 bytes .../sorobanAuthInvokeContractWithoutArgs.raw | Bin 0 -> 444 bytes fuzz/corpus/sorobanAuthPublic.raw | Bin 0 -> 216 bytes fuzz/corpus/sorobanAuthTestnet.raw | Bin 0 -> 216 bytes fuzz/corpus/sorobanAuthUnknownNetwork.raw | Bin 0 -> 216 bytes .../txCondExtraSignersWithOneSigner.raw | Bin 0 -> 332 bytes .../txCondExtraSignersWithTwoSigners.raw | Bin 0 -> 368 bytes fuzz/corpus/txCondIsNone.raw | Bin 0 -> 224 bytes fuzz/corpus/txCondLedgerBounds.raw | Bin 0 -> 268 bytes fuzz/corpus/txCondLedgerBoundsAreZero.raw | Bin 0 -> 268 bytes fuzz/corpus/txCondLedgerBoundsMaxIsZero.raw | Bin 0 -> 268 bytes fuzz/corpus/txCondLedgerBoundsMinIsZero.raw | Bin 0 -> 268 bytes fuzz/corpus/txCondMinAccountSequence.raw | Bin 0 -> 260 bytes fuzz/corpus/txCondMinAccountSequenceAge.raw | Bin 0 -> 260 bytes .../txCondMinAccountSequenceLedgerGap.raw | Bin 0 -> 260 bytes fuzz/corpus/txCondTimeBounds.raw | Bin 0 -> 224 bytes fuzz/corpus/txCondTimeBoundsAreZero.raw | Bin 0 -> 224 bytes fuzz/corpus/txCondTimeBoundsIsNone.raw | Bin 0 -> 268 bytes fuzz/corpus/txCondTimeBoundsMaxIsZero.raw | Bin 0 -> 224 bytes fuzz/corpus/txCondTimeBoundsMinIsZero.raw | Bin 0 -> 224 bytes fuzz/corpus/txCondWithAllItems.raw | Bin 0 -> 376 bytes fuzz/corpus/txCustomBaseFee.raw | Bin 0 -> 316 bytes fuzz/corpus/txMemoHash.raw | Bin 0 -> 240 bytes fuzz/corpus/txMemoId.raw | Bin 0 -> 216 bytes fuzz/corpus/txMemoNone.raw | Bin 0 -> 208 bytes fuzz/corpus/txMemoReturnHash.raw | Bin 0 -> 240 bytes fuzz/corpus/txMemoText.raw | Bin 0 -> 240 bytes fuzz/corpus/txMemoTextUnprintable.raw | Bin 0 -> 240 bytes fuzz/corpus/txMultiOperations.raw | Bin 0 -> 416 bytes fuzz/corpus/txNetworkCustom.raw | Bin 0 -> 184 bytes fuzz/corpus/txNetworkPublic.raw | Bin 0 -> 184 bytes fuzz/corpus/txNetworkTestnet.raw | Bin 0 -> 184 bytes .../txSourceOmitMuxedSourceEqualSigner.raw | Bin 0 -> 192 bytes fuzz/corpus/txSourceOmitSourceEqualSigner.raw | Bin 0 -> 184 bytes .../txSourceOmitSourceNotEqualSigner.raw | Bin 0 -> 184 bytes fuzz/corpus/txWithMuxedSource.raw | Bin 0 -> 232 bytes fuzz/fuzz_tx.c | 68 ++++++++++++++++++ fuzz/run.sh | 22 ++++++ 144 files changed, 134 insertions(+), 28 deletions(-) create mode 100644 fuzz/corpus/feeBumpTx.raw create mode 100644 fuzz/corpus/feeBumpTxOmitFeeSourceEqualSigner.raw create mode 100644 fuzz/corpus/feeBumpTxOmitFeeSourceNotEqualSigner.raw create mode 100644 fuzz/corpus/feeBumpTxOmitMuxedFeeSourceEqualSigner.raw create mode 100644 fuzz/corpus/feeBumpTxWithMuxedFeeSource.raw create mode 100644 fuzz/corpus/opAccountMerge.raw create mode 100644 fuzz/corpus/opAccountMergeWithMuxedDestination.raw create mode 100644 fuzz/corpus/opAllowTrustAuthorize.raw create mode 100644 fuzz/corpus/opAllowTrustAuthorizeToMaintainLiabilities.raw create mode 100644 fuzz/corpus/opAllowTrustDeauthorize.raw create mode 100644 fuzz/corpus/opBeginSponsoringFutureReserves.raw create mode 100644 fuzz/corpus/opBumpSequence.raw create mode 100644 fuzz/corpus/opChangeTrustAddTrustLine.raw create mode 100644 fuzz/corpus/opChangeTrustRemoveTrustLine.raw create mode 100644 fuzz/corpus/opChangeTrustWithLiquidityPoolAssetAddTrustLine.raw create mode 100644 fuzz/corpus/opChangeTrustWithLiquidityPoolAssetRemoveTrustLine.raw create mode 100644 fuzz/corpus/opClaimClaimableBalance.raw create mode 100644 fuzz/corpus/opClawback.raw create mode 100644 fuzz/corpus/opClawbackClaimableBalance.raw create mode 100644 fuzz/corpus/opClawbackWithMuxedFrom.raw create mode 100644 fuzz/corpus/opCreateAccount.raw create mode 100644 fuzz/corpus/opCreateClaimableBalance.raw create mode 100644 fuzz/corpus/opCreatePassiveSellOffer.raw create mode 100644 fuzz/corpus/opEndSponsoringFutureReserves.raw create mode 100644 fuzz/corpus/opExtendFootprintTtl.raw create mode 100644 fuzz/corpus/opInflation.raw create mode 100644 fuzz/corpus/opInvokeHostFunctionApproveUsdc.raw create mode 100644 fuzz/corpus/opInvokeHostFunctionAssetApprove.raw create mode 100644 fuzz/corpus/opInvokeHostFunctionAssetTransfer.raw create mode 100644 fuzz/corpus/opInvokeHostFunctionCreateContractNewAsset.raw create mode 100644 fuzz/corpus/opInvokeHostFunctionCreateContractWasmId.raw create mode 100644 fuzz/corpus/opInvokeHostFunctionCreateContractWrapAsset.raw create mode 100644 fuzz/corpus/opInvokeHostFunctionScvalsCase0.raw create mode 100644 fuzz/corpus/opInvokeHostFunctionScvalsCase1.raw create mode 100644 fuzz/corpus/opInvokeHostFunctionScvalsCase2.raw create mode 100644 fuzz/corpus/opInvokeHostFunctionTestPlugin.raw create mode 100644 fuzz/corpus/opInvokeHostFunctionTransferUsdc.raw create mode 100644 fuzz/corpus/opInvokeHostFunctionTransferXlm.raw create mode 100644 fuzz/corpus/opInvokeHostFunctionUploadWasm.raw create mode 100644 fuzz/corpus/opInvokeHostFunctionWithAuth.raw create mode 100644 fuzz/corpus/opInvokeHostFunctionWithAuthAndNoArgs.raw create mode 100644 fuzz/corpus/opInvokeHostFunctionWithAuthAndNoArgsAndNoSource.raw create mode 100644 fuzz/corpus/opInvokeHostFunctionWithComplexSubInvocation.raw create mode 100644 fuzz/corpus/opInvokeHostFunctionWithoutArgs.raw create mode 100644 fuzz/corpus/opInvokeHostFunctionWithoutAuthAndNoSource.raw create mode 100644 fuzz/corpus/opLiquidityPoolDeposit.raw create mode 100644 fuzz/corpus/opLiquidityPoolWithdraw.raw create mode 100644 fuzz/corpus/opManageBuyOfferCreate.raw create mode 100644 fuzz/corpus/opManageBuyOfferDelete.raw create mode 100644 fuzz/corpus/opManageBuyOfferUpdate.raw create mode 100644 fuzz/corpus/opManageDataAdd.raw create mode 100644 fuzz/corpus/opManageDataAddWithUnprintableData.raw create mode 100644 fuzz/corpus/opManageDataRemove.raw create mode 100644 fuzz/corpus/opManageSellOfferCreate.raw create mode 100644 fuzz/corpus/opManageSellOfferDelete.raw create mode 100644 fuzz/corpus/opManageSellOfferUpdate.raw create mode 100644 fuzz/corpus/opPathPaymentStrictReceive.raw create mode 100644 fuzz/corpus/opPathPaymentStrictReceiveWithEmptyPath.raw create mode 100644 fuzz/corpus/opPathPaymentStrictReceiveWithMuxedDestination.raw create mode 100644 fuzz/corpus/opPathPaymentStrictSend.raw create mode 100644 fuzz/corpus/opPathPaymentStrictSendWithEmptyPath.raw create mode 100644 fuzz/corpus/opPathPaymentStrictSendWithMuxedDestination.raw create mode 100644 fuzz/corpus/opPaymentAssetAlphanum12.raw create mode 100644 fuzz/corpus/opPaymentAssetAlphanum4.raw create mode 100644 fuzz/corpus/opPaymentAssetNative.raw create mode 100644 fuzz/corpus/opPaymentWithMuxedDestination.raw create mode 100644 fuzz/corpus/opRestoreFootprint.raw create mode 100644 fuzz/corpus/opRevokeSponsorshipAccount.raw create mode 100644 fuzz/corpus/opRevokeSponsorshipClaimableBalance.raw create mode 100644 fuzz/corpus/opRevokeSponsorshipData.raw create mode 100644 fuzz/corpus/opRevokeSponsorshipEd25519PublicKeySigner.raw create mode 100644 fuzz/corpus/opRevokeSponsorshipHashXSigner.raw create mode 100644 fuzz/corpus/opRevokeSponsorshipLiquidityPool.raw create mode 100644 fuzz/corpus/opRevokeSponsorshipOffer.raw create mode 100644 fuzz/corpus/opRevokeSponsorshipPreAuthTxSigner.raw create mode 100644 fuzz/corpus/opRevokeSponsorshipTrustLineWithAsset.raw create mode 100644 fuzz/corpus/opRevokeSponsorshipTrustLineWithLiquidityPoolId.raw create mode 100644 fuzz/corpus/opSetOptions.raw create mode 100644 fuzz/corpus/opSetOptionsAddEd25519SignerPayloadSigner.raw create mode 100644 fuzz/corpus/opSetOptionsAddHashXSigner.raw create mode 100644 fuzz/corpus/opSetOptionsAddPreAuthTxSigner.raw create mode 100644 fuzz/corpus/opSetOptionsAddPublicKeySigner.raw create mode 100644 fuzz/corpus/opSetOptionsRemoveEd25519SignerPayloadSigner.raw create mode 100644 fuzz/corpus/opSetOptionsRemoveHashXSigner.raw create mode 100644 fuzz/corpus/opSetOptionsRemovePreAuthTxSigner.raw create mode 100644 fuzz/corpus/opSetOptionsRemovePublicKeySigner.raw create mode 100644 fuzz/corpus/opSetOptionsWithEmptyBody.raw create mode 100644 fuzz/corpus/opSetTrustLineFlagsAuthorized.raw create mode 100644 fuzz/corpus/opSetTrustLineFlagsAuthorizedAndClawbackEnabled.raw create mode 100644 fuzz/corpus/opSetTrustLineFlagsAuthorizedToMaintainLiabilities.raw create mode 100644 fuzz/corpus/opSetTrustLineFlagsUnauthorized.raw create mode 100644 fuzz/corpus/opSourceOmitOpSourceEqualSignerNotEqualTxSource.raw create mode 100644 fuzz/corpus/opSourceOmitTxMuxedSourceEqualOpMuxedSourceEqualSigner.raw create mode 100644 fuzz/corpus/opSourceOmitTxMuxedSourceEqualOpSourceEqualSigner.raw create mode 100644 fuzz/corpus/opSourceOmitTxSourceEqualOpMuxedSourceEqualSigner.raw create mode 100644 fuzz/corpus/opSourceOmitTxSourceEqualOpSourceEqualSigner.raw create mode 100644 fuzz/corpus/opSourceOmitTxSourceEqualOpSourceNotEqualSigner.raw create mode 100644 fuzz/corpus/opSourceOmitTxSourceEqualSignerNotEqualOpSource.raw create mode 100644 fuzz/corpus/opWithEmptySource.raw create mode 100644 fuzz/corpus/opWithMuxedSource.raw create mode 100644 fuzz/corpus/sorobanAuthCreateSmartContract.raw create mode 100644 fuzz/corpus/sorobanAuthInvokeContract.raw create mode 100644 fuzz/corpus/sorobanAuthInvokeContractTestPlugin.raw create mode 100644 fuzz/corpus/sorobanAuthInvokeContractWithComplexSubInvocation.raw create mode 100644 fuzz/corpus/sorobanAuthInvokeContractWithoutArgs.raw create mode 100644 fuzz/corpus/sorobanAuthPublic.raw create mode 100644 fuzz/corpus/sorobanAuthTestnet.raw create mode 100644 fuzz/corpus/sorobanAuthUnknownNetwork.raw create mode 100644 fuzz/corpus/txCondExtraSignersWithOneSigner.raw create mode 100644 fuzz/corpus/txCondExtraSignersWithTwoSigners.raw create mode 100644 fuzz/corpus/txCondIsNone.raw create mode 100644 fuzz/corpus/txCondLedgerBounds.raw create mode 100644 fuzz/corpus/txCondLedgerBoundsAreZero.raw create mode 100644 fuzz/corpus/txCondLedgerBoundsMaxIsZero.raw create mode 100644 fuzz/corpus/txCondLedgerBoundsMinIsZero.raw create mode 100644 fuzz/corpus/txCondMinAccountSequence.raw create mode 100644 fuzz/corpus/txCondMinAccountSequenceAge.raw create mode 100644 fuzz/corpus/txCondMinAccountSequenceLedgerGap.raw create mode 100644 fuzz/corpus/txCondTimeBounds.raw create mode 100644 fuzz/corpus/txCondTimeBoundsAreZero.raw create mode 100644 fuzz/corpus/txCondTimeBoundsIsNone.raw create mode 100644 fuzz/corpus/txCondTimeBoundsMaxIsZero.raw create mode 100644 fuzz/corpus/txCondTimeBoundsMinIsZero.raw create mode 100644 fuzz/corpus/txCondWithAllItems.raw create mode 100644 fuzz/corpus/txCustomBaseFee.raw create mode 100644 fuzz/corpus/txMemoHash.raw create mode 100644 fuzz/corpus/txMemoId.raw create mode 100644 fuzz/corpus/txMemoNone.raw create mode 100644 fuzz/corpus/txMemoReturnHash.raw create mode 100644 fuzz/corpus/txMemoText.raw create mode 100644 fuzz/corpus/txMemoTextUnprintable.raw create mode 100644 fuzz/corpus/txMultiOperations.raw create mode 100644 fuzz/corpus/txNetworkCustom.raw create mode 100644 fuzz/corpus/txNetworkPublic.raw create mode 100644 fuzz/corpus/txNetworkTestnet.raw create mode 100644 fuzz/corpus/txSourceOmitMuxedSourceEqualSigner.raw create mode 100644 fuzz/corpus/txSourceOmitSourceEqualSigner.raw create mode 100644 fuzz/corpus/txSourceOmitSourceNotEqualSigner.raw create mode 100644 fuzz/corpus/txWithMuxedSource.raw create mode 100755 fuzz/run.sh diff --git a/.github/workflows/cflite_batch.yml b/.github/workflows/cflite_batch.yml index ea588fc5..23bb84b9 100644 --- a/.github/workflows/cflite_batch.yml +++ b/.github/workflows/cflite_batch.yml @@ -1,33 +1,48 @@ -name: ClusterFuzzLite batch fuzzing +name: ClusterFuzzLite cron tasks on: workflow_dispatch: + push: + branches: + - develop # Use your actual default branch here. schedule: - cron: "0 8 * * 1" # At 08:00 on Monday. permissions: read-all jobs: - BatchFuzzing: + Fuzzing: runs-on: ubuntu-latest strategy: fail-fast: false matrix: - sanitizer: [address, undefined, memory] + include: + - mode: batch + sanitizer: address + - mode: batch + sanitizer: undefined + - mode: batch + sanitizer: memory + - mode: prune + sanitizer: address + - mode: coverage + sanitizer: coverage steps: - - name: Build Fuzzers (${{ matrix.sanitizer }}) + - name: Build Fuzzers (${{ matrix.mode }} - ${{ matrix.sanitizer }}) id: build uses: google/clusterfuzzlite/actions/build_fuzzers@v1 with: - language: c++ + language: c # Change this to the language you are fuzzing. + github-token: ${{ secrets.GITHUB_TOKEN }} sanitizer: ${{ matrix.sanitizer }} - - name: Run Fuzzers (${{ matrix.sanitizer }}) + storage-repo: https://${{ secrets.PERSONAL_ACCESS_TOKEN }}@github.com/lightsail-network/app-stellar-fuzz-corpus + storage-repo-branch: main + storage-repo-branch-coverage: gh-pages + - name: Run Fuzzers (${{ matrix.mode }} - ${{ matrix.sanitizer }}) id: run uses: google/clusterfuzzlite/actions/run_fuzzers@v1 with: github-token: ${{ secrets.GITHUB_TOKEN }} - fuzz-seconds: 3600 # 1 hour - mode: "batch" + fuzz-seconds: 600 # 10 minutes + mode: ${{ matrix.mode }} sanitizer: ${{ matrix.sanitizer }} - # Optional but recommended: For storing certain artifacts from fuzzing. - # See later section on "Git repo for storage". - #storage-repo: https://${{ secrets.PERSONAL_ACCESS_TOKEN }}@github.com/LedgerHQ/fuzzers-corpus.git - #storage-repo-branch: main # Optional. Defaults to "main" - #storage-repo-branch-coverage: gh-pages # Optional. Defaults to "gh-pages". + storage-repo: https://${{ secrets.PERSONAL_ACCESS_TOKEN }}@github.com/lightsail-network/app-stellar-fuzz-corpus + storage-repo-branch: main # Optional. Defaults to "main" + storage-repo-branch-coverage: gh-pages # Optional. Defaults to "gh-pages". diff --git a/.github/workflows/cflite_pr.yml b/.github/workflows/cflite_pr.yml index ce31aba4..b86fc32c 100644 --- a/.github/workflows/cflite_pr.yml +++ b/.github/workflows/cflite_pr.yml @@ -13,32 +13,27 @@ jobs: strategy: fail-fast: false matrix: - sanitizer: [address, undefined, memory] + sanitizer: [address, undefined, memory] # Override this with the sanitizers you want. steps: - name: Build Fuzzers (${{ matrix.sanitizer }}) id: build uses: google/clusterfuzzlite/actions/build_fuzzers@v1 with: - language: c++ + language: c # Change this to the language you are fuzzing. github-token: ${{ secrets.GITHUB_TOKEN }} sanitizer: ${{ matrix.sanitizer }} - # Optional but recommended: used to only run fuzzers that are affected - # by the PR. - # See later section on "Git repo for storage". - #storage-repo: https://${{ secrets.PERSONAL_ACCESS_TOKEN }}@github.com/LedgerHQ/fuzzers-corpus.git - #storage-repo-branch: main # Optional. Defaults to "main" - #storage-repo-branch-coverage: gh-pages # Optional. Defaults to "gh-pages". + storage-repo: https://${{ secrets.PERSONAL_ACCESS_TOKEN }}@github.com/lightsail-network/app-stellar-fuzz-corpus + storage-repo-branch: main + storage-repo-branch-coverage: gh-pages - name: Run Fuzzers (${{ matrix.sanitizer }}) id: run uses: google/clusterfuzzlite/actions/run_fuzzers@v1 with: github-token: ${{ secrets.GITHUB_TOKEN }} - fuzz-seconds: 600 # 10 minutes + fuzz-seconds: 300 # 5 minutes mode: "code-change" sanitizer: ${{ matrix.sanitizer }} - # Optional but recommended: used to download the corpus produced by - # batch fuzzing. - # See later section on "Git repo for storage". - #storage-repo: https://${{ secrets.PERSONAL_ACCESS_TOKEN }}@github.com/LedgerHQ/fuzzers-corpus.git - #storage-repo-branch: main # Optional. Defaults to "main" - #storage-repo-branch-coverage: gh-pages # Optional. Defaults to "gh-pages". + output-sarif: true + storage-repo: https://${{ secrets.PERSONAL_ACCESS_TOKEN }}@github.com/lightsail-network/app-stellar-fuzz-corpus + storage-repo-branch: main + storage-repo-branch-coverage: gh-pages diff --git a/fuzz/CMakeLists.txt b/fuzz/CMakeLists.txt index bd9b673f..81449508 100644 --- a/fuzz/CMakeLists.txt +++ b/fuzz/CMakeLists.txt @@ -19,6 +19,12 @@ if (NOT CMAKE_C_COMPILER_ID MATCHES "Clang") message(FATAL_ERROR "Fuzzer needs to be built with Clang") endif () +# Build with code coverage generation +if(CODE_COVERAGE) + add_compile_options(-fprofile-instr-generate -fcoverage-mapping) + add_link_options(-fprofile-instr-generate -fcoverage-mapping) +endif() + include(CTest) ENABLE_TESTING() diff --git a/fuzz/corpus/feeBumpTx.raw b/fuzz/corpus/feeBumpTx.raw new file mode 100644 index 0000000000000000000000000000000000000000..66ef2ce94315d8034cc45b5b9093ce29e6a94067 GIT binary patch literal 444 zcmb7V^(l-6wF?aM4rBn8GlKNM zK=QOzGC(#+j5{MWCnsN_JijO>1tbkJ8?2TH^TFyK9c$#D9WYzX`%_H(56_b5^Jhv^ zJ0`WuFk@N+kS59ONixg49J&(UtW2&JILNV2rPWB`>jg7m;Z z^0ZYlKsHE>J0mqGCtsmFzbGdKBn=V+t0lsGZlF@R2X7B>fiwaEBh;M^JXtfgXx+2U zzNg}_w9YGp;kd)v01YKUp*?dOBAh0D-(z`q_Irio`MWO}Ckrw^OgeBRWYJcc-Wz?M OUgiu_KWyUw83q8B4{r7V literal 0 HcmV?d00001 diff --git a/fuzz/corpus/feeBumpTxOmitFeeSourceNotEqualSigner.raw b/fuzz/corpus/feeBumpTxOmitFeeSourceNotEqualSigner.raw new file mode 100644 index 0000000000000000000000000000000000000000..6c0cf66ed008fe0f89338ee67846ae6ff2078db2 GIT binary patch literal 312 zcmb6x23AXi`P@LIau41f-~wp`0!FC44m?>iwrJh6&c3JOu(ZxAgyFcu+5inDL7_c! v8zP)0ecxkwclLXQm4A?1Y#4R-iWcFc7b8ufefH> zm_;D149U}0$w0-pGg5PM@)gSSi*iyxQXq9;wM3ZD4OA-k;Ozk}kVYV2gu2s#Cu_zQ zt$Wtl_f#B~)_H|69Cuh7prIrvv}bNZgwv$&do1tHey@-`fA=NhWI^VKNe7OEEZQp5 Rd!x_O%ba2Ahix1n!vHldZ!Q1; literal 0 HcmV?d00001 diff --git a/fuzz/corpus/feeBumpTxWithMuxedFeeSource.raw b/fuzz/corpus/feeBumpTxWithMuxedFeeSource.raw new file mode 100644 index 0000000000000000000000000000000000000000..4bb259c1c8b47a76d276def2382b6ce6686d9dc8 GIT binary patch literal 524 zcmb zm_;D149U}0$w0-pGg5PM@)gSSi*iyxQXsRzYKbr(tnSgVM*i6Wv(>ym#l-*cEQvmU zrZlxv^6o9OHOq~jWxfan843n7rZoU*lFXhYv&_q(EAh?B)|1Ntb-P3LT<#qS`CPppbzfDm zPX4O=O84yly&uzsKYm>2^ij+u$RM!l@=?!krUkLD*qy=-F~psb?Q7rQHsgE}Ywx5- K-+*z= literal 0 HcmV?d00001 diff --git a/fuzz/corpus/opAccountMergeWithMuxedDestination.raw b/fuzz/corpus/opAccountMergeWithMuxedDestination.raw new file mode 100644 index 0000000000000000000000000000000000000000..6f0baad55e86071bac9048723b477edba9efe8b0 GIT binary patch literal 220 zcmbz>% literal 0 HcmV?d00001 diff --git a/fuzz/corpus/opAllowTrustAuthorizeToMaintainLiabilities.raw b/fuzz/corpus/opAllowTrustAuthorizeToMaintainLiabilities.raw new file mode 100644 index 0000000000000000000000000000000000000000..e08007aa730191ecb57a8288cdefdf56894822ce GIT binary patch literal 224 zcmb1ulteC*J@%$5iv;5k9Q?lQ( Y7dd?YrgC5OX#M~H|Nn*@s|TqC0QZMc#{d8T literal 0 HcmV?d00001 diff --git a/fuzz/corpus/opChangeTrustRemoveTrustLine.raw b/fuzz/corpus/opChangeTrustRemoveTrustLine.raw new file mode 100644 index 0000000000000000000000000000000000000000..de8db78483c040fb4f2568a643f888db9650ac54 GIT binary patch literal 228 zcmb1ulteC*J@%$5iv;5k9Q?lQ( R7dd?YrgC5OC|D7c006a%OL71J literal 0 HcmV?d00001 diff --git a/fuzz/corpus/opChangeTrustWithLiquidityPoolAssetAddTrustLine.raw b/fuzz/corpus/opChangeTrustWithLiquidityPoolAssetAddTrustLine.raw new file mode 100644 index 0000000000000000000000000000000000000000..4e7918c857a808cc9b34b1b15249d639d6dcc00b GIT binary patch literal 284 zcmb z+AB+wt@@=>rBykWfz*ZuyMPs2&lI%a`!}O|!HNld8_z%SH_NZxHzoTmdy&KUZz}gi Tj{?=o)&Kwh|8K~#dXV7&uZCeI literal 0 HcmV?d00001 diff --git a/fuzz/corpus/opChangeTrustWithLiquidityPoolAssetRemoveTrustLine.raw b/fuzz/corpus/opChangeTrustWithLiquidityPoolAssetRemoveTrustLine.raw new file mode 100644 index 0000000000000000000000000000000000000000..5a27ac377130ecf474ad9ed5efdce4ac44541d91 GIT binary patch literal 284 zcmb z+AB+wt@@=>rBykWfz*ZuyMPs2&lI%a`!}O|!HNld8_z%SH_NZxHzoTmdy&KUZz}gi Mj{?=ofenQc0D4_p6951J literal 0 HcmV?d00001 diff --git a/fuzz/corpus/opClaimClaimableBalance.raw b/fuzz/corpus/opClaimClaimableBalance.raw new file mode 100644 index 0000000000000000000000000000000000000000..d371038924137345ed014ec43afcfbd29f085f3a GIT binary patch literal 212 zcmbCBm J#IO56Y5Ol<%F literal 0 HcmV?d00001 diff --git a/fuzz/corpus/opClawback.raw b/fuzz/corpus/opClawback.raw new file mode 100644 index 0000000000000000000000000000000000000000..857fcc18ef33ee30e6fbd15c056b5bee65dd436b GIT binary patch literal 264 zcmb1ulteC*J@%$5iv;5k9Q?lQ( z7dd?YrgC5OC`iqtV~zZ?17@pve~O9!;aL)W{!D3Vr{vvRW^0xkJCBm J#IO56Y51ulteC*J@%$5iv;5k9Q?lQ( z7dd?YrgC5ODAZV>N_Bxp#~S%(2h3LU{uC4c!?Ps%{F&0!PRYBs%+@S7dY1Vj6sU+P Lq<6XkkY)e?z!zSX literal 0 HcmV?d00001 diff --git a/fuzz/corpus/opCreateAccount.raw b/fuzz/corpus/opCreateAccount.raw new file mode 100644 index 0000000000000000000000000000000000000000..220d4b68e40d31987c4e12620df99be222f0848e GIT binary patch literal 220 zcmbh++T$-Iz@4 literal 0 HcmV?d00001 diff --git a/fuzz/corpus/opCreateClaimableBalance.raw b/fuzz/corpus/opCreateClaimableBalance.raw new file mode 100644 index 0000000000000000000000000000000000000000..a69309469dc486bceec4e2608e2731c353b6a72a GIT binary patch literal 376 zcmb1ulteC*J@%$5iv;5k9Q?lQ( z7dd?YrgC5OC|J#`Qy>cLeh}l)u}1#c0khS-KgGoV@GOZwf2K6GQ}XUDvo*_&o@KrW z1*w67Nixg49J&(UtW2&JILNV2I$Qt% literal 0 HcmV?d00001 diff --git a/fuzz/corpus/opExtendFootprintTtl.raw b/fuzz/corpus/opExtendFootprintTtl.raw new file mode 100644 index 0000000000000000000000000000000000000000..a6af5ccf824c3e7377fe8348ccb7e9dff09d92c4 GIT binary patch literal 196 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBQ>amVhz`g;W% zaxd(SJhzg4Ud?fy=Nlh}d=xqR&(AIIECa**OANa6-vX7gg49C+Bb1f|(~SQ?6if_6 zvw`?5E?PV1+RqR5b?Mx0y=G6#D(>fET^FPDE?zqA)xWgQ6sSf7Ngt5OFatzDKv@R> Dz=Jmu literal 0 HcmV?d00001 diff --git a/fuzz/corpus/opInflation.raw b/fuzz/corpus/opInflation.raw new file mode 100644 index 0000000000000000000000000000000000000000..9721e8956365a062a4d5f7f042bb22b3b53d92e0 GIT binary patch literal 176 zcmbWEQ;V2~^4q#Ec+4SO7>IEJx5h1_lYJ ze#W)$&qc0#s+sXUA@RzTLqXA{sq>d;W~F|a`CjvBO8Jv%Ky~bi1qDUKPM*JdH(!Eejw&_%*n|wPs~dO#~K5J zAeuZ&T2X#3Pz)YFM8qY?T=wFE)V!3`A|Ml?mx#D!U@&l-1N8nKAl3nCW?($}6acOP B|H%LV literal 0 HcmV?d00001 diff --git a/fuzz/corpus/opInvokeHostFunctionAssetApprove.raw b/fuzz/corpus/opInvokeHostFunctionAssetApprove.raw new file mode 100644 index 0000000000000000000000000000000000000000..7b8b2bdf0df392a1ce639257cfb208cafb244a99 GIT binary patch literal 800 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBQ>amVhz`g;W% zaxd(SJhzg4Ud?fy=Nlh}d=xqR&(AIIECaLpJqF$RZ-GjAfS3`a2MYj+gXIXC$G{)~ z)z5f+Qg_jz0-N)%zQ3OT<-Ko!SLlkJm49Zt@+~^ywB_QtM4&qM#DapN{IXP#78W2D z0x>{<2z%gaA02DtpB*q;&HGbK{14BP=<{bvQ#&Q^-ZERW+~`^6i%_6(Twp^X1XBq2 z6A+7;LHDQzkVf|NP;oQJ{V;cfXf_a^i0~GH>LW#u08|esJ@ErEr(;e|etBYEGC0;4 z7zEMeS<;H~bAe*;_#q-LLFTd-7o_H;q=J$zLN5_<3rsmDsfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBQ>amVhz`g;W% zaxd(SJhzg4Ud?fy=Nlh}d=xqR&(AIIECZ9Z41@0cw?L)bK+Fizg9U)Z!Eyx6V_=Yg z>Sw$@sk`V-(S!F^4>SVD|E%q%0IJR`4*jU+H&z+B2XPiNl{{6aatsfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBQ>amVhz`g;W% zaxd(SJhzg4Ud?fy=Nlh}d=xqR&(AIIECXZUHU{1KZ-Gj=fS3`a2MYj+gXIXC$G{)~ zQwuYPke*}$0BRo0Z7>>aJeAA_nT2dFh|LBPi~juluOyGmZWEbAL;XYUukLo~y_Pw0 hI^|sqk4*Do=@6hA5wKpy@-INz0Ej(+7zidE0RVe%g|Ywu literal 0 HcmV?d00001 diff --git a/fuzz/corpus/opInvokeHostFunctionCreateContractWasmId.raw b/fuzz/corpus/opInvokeHostFunctionCreateContractWasmId.raw new file mode 100644 index 0000000000000000000000000000000000000000..565cfdeb8c0c33e70159858521f5c2ec0614dabc GIT binary patch literal 468 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBQ>amVhz`g;W% zaxd(SJhzg4Ud?fy=Nlh}d=xqR&(AIIECb^^6$ah;Z(-^|dVqitLNQ1nvB5%w%v)hx znwC71)#<}q5lwyBL}O0Xv(Jnc-d%fs>oJ{&OPQ)ch6q2*h}ipNb-)6)+aC&xH2Uoh z&TVtJxFVP_C*fd>s-QTMoiKOM({7MmFnd8XJCW{X1L;$E@T@nsakE=SP*1H}mD!C& nGTmI2Ql#k9RuSwpn4_{KLdz?VBu!~Ikcrb literal 0 HcmV?d00001 diff --git a/fuzz/corpus/opInvokeHostFunctionCreateContractWrapAsset.raw b/fuzz/corpus/opInvokeHostFunctionCreateContractWrapAsset.raw new file mode 100644 index 0000000000000000000000000000000000000000..08ec80bced2a9163ddc1e50da943b426ce38be53 GIT binary patch literal 256 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBQ>amVhz`g;W% zaxd(SJhzg4Ud?fy=Nlh}d=xqR&(AIIECX9|8-worw?L)LAoWnd2&E-}G>8qtOg^qI z?yf;l86frOSR?=JfZ1x^pJL*Fc$P$;KU138DS7vn*_!1>&oW-qlOJU2=EPF==6YcXdDD<;W9FAhm1ZVP=E^e$9h45&r~te1J|ZXj&{)ba*M1F0xx E0Nk5NW&i*H literal 0 HcmV?d00001 diff --git a/fuzz/corpus/opInvokeHostFunctionScvalsCase0.raw b/fuzz/corpus/opInvokeHostFunctionScvalsCase0.raw new file mode 100644 index 0000000000000000000000000000000000000000..6ef8a24556b0e292ac5cecfc3d0b66332f14997c GIT binary patch literal 256 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBQ>amVhz`g;W% zaxd(SJhzg4Ud?fy=Nlh}d=xqR&(AIIECU1M7mzy7X-t=a6eEa@1;E55pmL1YCv_Jc zDzG{K>ig^YU*7u$c!jRmS@~zSE8n6MPFpUXO9ZN8DM>9Z0n!{WJwO^{4l_{d5|CzL sU@))*(yTztz?j+#qS-)f2DbN;fFwJJ*;8(D3P^#?VB(jM28n?H0PC+m=>Px# literal 0 HcmV?d00001 diff --git a/fuzz/corpus/opInvokeHostFunctionScvalsCase1.raw b/fuzz/corpus/opInvokeHostFunctionScvalsCase1.raw new file mode 100644 index 0000000000000000000000000000000000000000..09982b2e56b01234f5851d5927b1a6915b8db643 GIT binary patch literal 412 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBQ>amVhz`g;W% zaxd(SJhzg4Ud?fy=Nlh}d=xqR&(AIIECU1M7mzy7X-t=a6eEa@1;E55pmL1YCv_Jc zDzG{K>ig^YU*7u$c!jRmS@~zSE8n6MPFpUXO9ZN8DM>9Z0n(g6%mLEJ#4jNY<%76D zpgzmH{k1QU!3E}m3Ah;de*yrgoTmYy5f_UWC?Qmmky)$&L?AaQBvk?_uyQ^iDVdR) qlasH2qN2E@C^Ih|Vj@3~;sEJOE6qy=vIT$`6dvI4g|dMZ0ssIZ`E+9d literal 0 HcmV?d00001 diff --git a/fuzz/corpus/opInvokeHostFunctionScvalsCase2.raw b/fuzz/corpus/opInvokeHostFunctionScvalsCase2.raw new file mode 100644 index 0000000000000000000000000000000000000000..e36d2490a77181e1303390c505520306d82911cb GIT binary patch literal 440 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBQ>amVhz`g;W% zaxd(SJhzg4Ud?fy=Nlh}d=xqR&(AIIECU1M7mzy7X-t=a6eEa@1;E55pmL1YCv_Jc zDzG{K>ig^YU*7u$c!jRmS@~zSE8n6MPFpUXO9ZN8DM>9Z0n+S1EC|FPGeBkQi%PVootk5F`NvLJ*1=e}L5z<1P`PnW9j0Q-HKE5X1ZjVl$lYXbHZS p5VmLAx=5{w6N0egPTH005UpdT0Ou literal 0 HcmV?d00001 diff --git a/fuzz/corpus/opInvokeHostFunctionTestPlugin.raw b/fuzz/corpus/opInvokeHostFunctionTestPlugin.raw new file mode 100644 index 0000000000000000000000000000000000000000..2afbe6fa44158b429e49ac96f5e9a76174cc9904 GIT binary patch literal 336 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBQ>amVhz`g;W% zaxd(SJhzg4Ud?fy=Nlh}d=xqR&(AIIECU1M7mzy7X-t=a6eEa@1;E55pmH!i7Nu|@ yj*`^klC;viWS|He5QFq^!et>0kQf)57|7k+XkzGGW}pBMx*!^#g$OmQFg*aXe<)%A literal 0 HcmV?d00001 diff --git a/fuzz/corpus/opInvokeHostFunctionTransferUsdc.raw b/fuzz/corpus/opInvokeHostFunctionTransferUsdc.raw new file mode 100644 index 0000000000000000000000000000000000000000..96a21eb657e374f24ad0eb801bf7759894bab128 GIT binary patch literal 712 zcmbhX{@i)t_ s-8UusEqjr}_irlqMUTSFB$$4Hb`x!;{%2siU^)Uc`vu4i42(wR0P42#o&W#< literal 0 HcmV?d00001 diff --git a/fuzz/corpus/opInvokeHostFunctionTransferXlm.raw b/fuzz/corpus/opInvokeHostFunctionTransferXlm.raw new file mode 100644 index 0000000000000000000000000000000000000000..0f40570c784638ca23982a751492e6ab697c65b4 GIT binary patch literal 624 zcmb^YeA?i2##FnX^BHI+7tCA`&GhR-1CWBb7bG;; y-3oRihyVhRyV*cA5#cKWRS%A5Ae(`RumUL~9RB)CZvjIR7}tynK;=M6XA%I*v&$y{ literal 0 HcmV?d00001 diff --git a/fuzz/corpus/opInvokeHostFunctionUploadWasm.raw b/fuzz/corpus/opInvokeHostFunctionUploadWasm.raw new file mode 100644 index 0000000000000000000000000000000000000000..711be30dd3a253d29cb3817f0febc78dd5d1b389 GIT binary patch literal 812 zcmah{-D}fO6hAjfTeq~D;>6X5kxhg>*xIIcYhJVsDhMhveQ+>Hlk}FVO}Zs%L6Nj> zwd_gJcXi;y6cH8Q9F^@!5H=f*NIUb#C zoEBPdZcok9ACJ8_y5xL__=X-_ef4Sd`-TYs6q)cXIluJ#P%B*5*IScoj{^6uy$*hT zzIp!F!0MkfCyZ5qnRgJq|ASDG%kPM*d-nh1VUTc1E$S2~mhJ`aVRDq?ASXvV9sp4Z zA;O>%ij%}8l<-y=5Yf{Bw2z@^n)cBMIDdq$p=`ar3~UXyV<6@8>sT+FS19PaXlN$Z zv0(#)WC--ja$d0&85?;Tv9esm%CxL17N)8GMa0}e6sjR73&TKV+#%h3x&E}dAxaci zCjt_h2tkkYy6YT4(qA+uF%u!gBZ;4190rz$EV?uT$3v*g=HZFNHzlS)=oB~W2JVv@ z1Qz@rEC;zc&&i`*EC9>ha4lf_fNQoj28c-k3)W7pY}lrv+151Hs^qae$(-z7mfyOz z#VZD}Y-}1ziPy>%S3O9adEUf!#WXD5E@Hl_lqxtzvh+MyCu{qQ85jz8i(;dyV_Vs( zJ3yFX&!M($`b?{e-9{tgPsGNPvF>pJc9@oxzuewV3h@{jQBxE4$3;;%oJbZ#HJ-vL zwV);n>2X2TuqfiRm=_a*s0w(Dv`1UIJ?Ua#_h#`z>&xS_3;y>%XUx%CM^^4OGjAWB YL#5ox)Pe9`FJ!PVMq2GzC*FnNKQ>z13jhEB literal 0 HcmV?d00001 diff --git a/fuzz/corpus/opInvokeHostFunctionWithAuth.raw b/fuzz/corpus/opInvokeHostFunctionWithAuth.raw new file mode 100644 index 0000000000000000000000000000000000000000..23ca00364f3d393f0ed7f0563d282a8f0470f968 GIT binary patch literal 1008 zcmb5q8-bJE zxr+PzFP}CzoiWw!XE{(QdtyOBQGQt}NEZtb!{dvVam%oK-2|$VBv}Pw0zxZ|}eT-}0pNm}gR5RmyLgJMvhk~L@Q|B+y%u4+-^S$QNl=3Ij!1fj; z<`t)<76IAJKr95rV6f)G+T#_<4Gep??Yg8lai(%-eO3EofpZ@N;&QmT3qw?air{K1 zmoBtkA6l4Pr5Ju}{qK^A*N?dRy}7hu`xCx&CVS5OH9)mo5K|!}Q^Ms0WIm8hZWw`# zA;zC9pzuYvQ+3Oq8UUy>q-khY+-?7?eKy@4?sl_E}rFqFvJs|hM%pt;E3=C|G z*6d{B7vGMgk8$n$bCK(wYG!;-NW3!TP*8Mf>ii{|S*c%UzSn%3QvPHb*xsVVyyCRf zA|RU?h=qU{4Axv&d%Qxqfno2qU6=GG&Q$KKuWElRaPDJ3Tn;yPVTdYF5nOHM(uLOR zLkp9u6vL0L|6MZi`Vm*ZHpXEUH?1=>hMfqi^AgwGw X4EHlF!-rw_x(7hJn0bHo!`%!3CE4C5 literal 0 HcmV?d00001 diff --git a/fuzz/corpus/opInvokeHostFunctionWithComplexSubInvocation.raw b/fuzz/corpus/opInvokeHostFunctionWithComplexSubInvocation.raw new file mode 100644 index 0000000000000000000000000000000000000000..bdbd0a951ed788dea4c11692b7eeab665d9092ec GIT binary patch literal 1072 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBQ>amVhz`g;W% zaxd(SJhzg4Ud?fy=Nlh}d=xqR&(AIIECU1M7mzy7X-t=a6eEa@1%SlCa)ixekbvrE zG?V)hvWDd!_q3fG@)o|T zbNh|IWnk^$mksp!-z9Z`>Ao7p$%+ z@z2D9sqo+x0dU+Bp@wAtnjqW^V-f9NQ-}_jUt#_wT0baZ0|87w$!<4C)eqs35Z4x1 G^aB7!l`%a4 literal 0 HcmV?d00001 diff --git a/fuzz/corpus/opInvokeHostFunctionWithoutArgs.raw b/fuzz/corpus/opInvokeHostFunctionWithoutArgs.raw new file mode 100644 index 0000000000000000000000000000000000000000..187dc92858c6756b9201e04b6fb79076e15a7d65 GIT binary patch literal 288 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBQ>amVhz`g;W% zaxd(SJhzg4Ud?fy=Nlh}d=xqR&(AIIECb`Q9}K$l-vX7gfYd_)Bb1ha@f99C>y2&P z?3NMKQ|ne`c4LuDH&^8pW#8+LTUd>at!a$C;UzT$GxdnpXnV1k;N|vkO1Wh}ipN zb-)6)+aC&xH2Uoh&TVtJxFVP_C*fd>s-QSfEy!**5KV-gB4G8BT>1UUy>q-khY+-?7?eKy@4?sl_E}rFqH7<^cfiYcrSt literal 0 HcmV?d00001 diff --git a/fuzz/corpus/opLiquidityPoolDeposit.raw b/fuzz/corpus/opLiquidityPoolDeposit.raw new file mode 100644 index 0000000000000000000000000000000000000000..c360303a1a4d742149ef6895aa073ff916301bf5 GIT binary patch literal 240 zcmb=jq@=T<`KC>h1bl5Yi3qHzEZh!p4 ikb!|y!mnrn$Xo^n<*ba*L~e5+D}`akv<4szwg&(`Zcpt1 literal 0 HcmV?d00001 diff --git a/fuzz/corpus/opLiquidityPoolWithdraw.raw b/fuzz/corpus/opLiquidityPoolWithdraw.raw new file mode 100644 index 0000000000000000000000000000000000000000..d8ca59e0cdfc0241875dcf5a5df6c1c2e83043b0 GIT binary patch literal 232 zcmb=jq@=T<`KC>h1bl5Yi3qHzEZh!p4 Z5M=%m>k^Q;;vQu$K(yY3w--P(0|3cRPy+w} literal 0 HcmV?d00001 diff --git a/fuzz/corpus/opManageBuyOfferCreate.raw b/fuzz/corpus/opManageBuyOfferCreate.raw new file mode 100644 index 0000000000000000000000000000000000000000..68871337b6e23bb74fd714011a5613469372cdcf GIT binary patch literal 248 zcmb=tePR9TM literal 0 HcmV?d00001 diff --git a/fuzz/corpus/opManageBuyOfferDelete.raw b/fuzz/corpus/opManageBuyOfferDelete.raw new file mode 100644 index 0000000000000000000000000000000000000000..009dd5b448ed63c843bb74c2c07b0cb4c81b6123 GIT binary patch literal 248 zcmb0vMp0Ey&HumAu6 literal 0 HcmV?d00001 diff --git a/fuzz/corpus/opManageBuyOfferUpdate.raw b/fuzz/corpus/opManageBuyOfferUpdate.raw new file mode 100644 index 0000000000000000000000000000000000000000..06b436e5733ce0ba9d84518ccdf78c94b50b6bac GIT binary patch literal 248 zcmb+AB+w zt@@=>rBykWffdb|)&Qa(9c$#D9WYzX`%_H(56_b5^Jhv^J0Y6t3MvoRCwXk(|u*y70a`B!pR_202N$>DgXcg literal 0 HcmV?d00001 diff --git a/fuzz/corpus/opPathPaymentStrictReceiveWithEmptyPath.raw b/fuzz/corpus/opPathPaymentStrictReceiveWithEmptyPath.raw new file mode 100644 index 0000000000000000000000000000000000000000..85e6ecadd829227027d7012707b1c50f9994cb40 GIT binary patch literal 280 zcmb+AB+w zt@@=>rBykWffdb|)&Qa(9c$#D9WYzX`%_H(56_b5^Jhv^J0+AB+w zt@@=>rBykWffdb|)&Mmg$W<43bgYqocED^k?@uxDKRipK&z~tx?UcNG%WTbZqi2~f zLcw}ilCIk9KA!+&gY63qb^%*xJyXzv@868>1uG`-Z9Mj&-<0gP>_raWzp308 zJql7E;OOV#2sQ*lTn_5FTd?-}qvQNL4*NXQtp0dRQ{jbEPxqB+S1ixk2`7V80RWH! Bgkk^y literal 0 HcmV?d00001 diff --git a/fuzz/corpus/opPathPaymentStrictSend.raw b/fuzz/corpus/opPathPaymentStrictSend.raw new file mode 100644 index 0000000000000000000000000000000000000000..f6b4bdad07b6f47f830f63d6a5f502f0adb21552 GIT binary patch literal 376 zcmbCV=Qi#~S%(2h3LU{uC4c!?Ps%{F&0!PRYBs%+@S7dY1Vj6s(pd z>8h=Ku>p_`@-Jg(unX8C>zRTUeE(*2FIX{wZ{ztV{$}~L`=(^SWiN90{!Qh+=uwdR x07pL;N3bCf;&M>W-Ga5(A06l4aoFdXX7$HonhGzRdb+PnyJC6PPBCV=Qi#~S%(2h3LU{uC4c!?Ps%{F&0!PRYBs%+@S7dY1Vj6s(pd N>8h=Ku>qJ3BmiTPUP1r> literal 0 HcmV?d00001 diff --git a/fuzz/corpus/opPathPaymentStrictSendWithMuxedDestination.raw b/fuzz/corpus/opPathPaymentStrictSendWithMuxedDestination.raw new file mode 100644 index 0000000000000000000000000000000000000000..ee7fc0f2ab42d5f0129a95a8bff55a0bd8f915e2 GIT binary patch literal 384 zcmbCP0k`a@7SM9c$#D9WYzX`%_H(56_b5^Jhv^J0gm2R?TY1DJK z5ehVq$;r_V4ndZ*rB4mJ^kQblqyW{kGUo#JMq9f0TUz9spOCOiovZ6Nx&A){fYbs2 DunuG2 literal 0 HcmV?d00001 diff --git a/fuzz/corpus/opPaymentAssetAlphanum4.raw b/fuzz/corpus/opPaymentAssetAlphanum4.raw new file mode 100644 index 0000000000000000000000000000000000000000..564353be452ddf6e0fc0f30a1923ab712ea1229d GIT binary patch literal 264 zcmb z5ehQTDa09MHiMd*j8nkI_s^O_9=$P-Ij4SEyQQu6%F<-3eyLPxRgPu#{~-XR768;l BVgdjF literal 0 HcmV?d00001 diff --git a/fuzz/corpus/opPaymentAssetNative.raw b/fuzz/corpus/opPaymentAssetNative.raw new file mode 100644 index 0000000000000000000000000000000000000000..9af5867a011cc5024c4ac039feb755b8b630b92a GIT binary patch literal 224 zcmb N5ehQ2{yzkO*Z@8aQpErO literal 0 HcmV?d00001 diff --git a/fuzz/corpus/opPaymentWithMuxedDestination.raw b/fuzz/corpus/opPaymentWithMuxedDestination.raw new file mode 100644 index 0000000000000000000000000000000000000000..a3799f48d23de1c203c0275d26fccf277b9c57a3 GIT binary patch literal 232 zcmbSrUEzOlfMTB*MB-? literal 0 HcmV?d00001 diff --git a/fuzz/corpus/opRevokeSponsorshipAccount.raw b/fuzz/corpus/opRevokeSponsorshipAccount.raw new file mode 100644 index 0000000000000000000000000000000000000000..0c39174d1e42921f02e246f48f651c19bdaf806c GIT binary patch literal 220 zcmbMcB($r4LySL2N oEH`?V`63jk#K9*uB|WuBA-Du+XJV0pV?lvJVp4Jn(HLY80LAEIn*aa+ literal 0 HcmV?d00001 diff --git a/fuzz/corpus/opRevokeSponsorshipEd25519PublicKeySigner.raw b/fuzz/corpus/opRevokeSponsorshipEd25519PublicKeySigner.raw new file mode 100644 index 0000000000000000000000000000000000000000..c4ddb076b73fc42586d791e6a315974042e5c16a GIT binary patch literal 252 zcmb#6O0LG_G(BZjozW9!Y@I001sjS{(oY literal 0 HcmV?d00001 diff --git a/fuzz/corpus/opRevokeSponsorshipHashXSigner.raw b/fuzz/corpus/opRevokeSponsorshipHashXSigner.raw new file mode 100644 index 0000000000000000000000000000000000000000..448d84e6b518f97318de4366e07959b2d91474ec GIT binary patch literal 252 zcmbmsVbQecbT-`Yo&_2aKm~to0O`J@M;4pc)1MaiCpv literal 0 HcmV?d00001 diff --git a/fuzz/corpus/opRevokeSponsorshipLiquidityPool.raw b/fuzz/corpus/opRevokeSponsorshipLiquidityPool.raw new file mode 100644 index 0000000000000000000000000000000000000000..d4b3a7bd63ac9581f2d871509cabe4536afa4b53 GIT binary patch literal 216 zcmbFr!AZ1ne5oKsr+*8I(W Lf8&N<$3cn!RVhma literal 0 HcmV?d00001 diff --git a/fuzz/corpus/opRevokeSponsorshipOffer.raw b/fuzz/corpus/opRevokeSponsorshipOffer.raw new file mode 100644 index 0000000000000000000000000000000000000000..fbcf0dc679723363a8655f981530c213e9e12cc6 GIT binary patch literal 228 zcmb;(vISM4vxXn%XIO_m

ym#l-*cEQvmUrZlxv^6o9O zHOq~jWxfans&Pn6N=`{lOV7y6%FfBn%P%M_DlRE4E3c@ma&&TbadmU|@bvQb@%8f$ g2n-4i2@MO6h>S8YFfcSSHZe6bx3C17!3A;)0Hxt!3IG5A literal 0 HcmV?d00001 diff --git a/fuzz/corpus/opSetOptionsAddHashXSigner.raw b/fuzz/corpus/opSetOptionsAddHashXSigner.raw new file mode 100644 index 0000000000000000000000000000000000000000..1a546fcd43df2d8fa3df12ac6f91e8864aba3b3c GIT binary patch literal 252 zcmbnSpO;@5pZGq^zJ008-nOm6@H literal 0 HcmV?d00001 diff --git a/fuzz/corpus/opSetOptionsAddPublicKeySigner.raw b/fuzz/corpus/opSetOptionsAddPublicKeySigner.raw new file mode 100644 index 0000000000000000000000000000000000000000..17d3eb56d858c67407716df2e6448e4ea1fedcae GIT binary patch literal 252 zcmb(Q}B{@DSu)x1B&#Q*Rti9Ua(G__Om?k%%5 Q%Z;98z6b@H!38o00NRI3TmS$7 literal 0 HcmV?d00001 diff --git a/fuzz/corpus/opSetOptionsRemoveEd25519SignerPayloadSigner.raw b/fuzz/corpus/opSetOptionsRemoveEd25519SignerPayloadSigner.raw new file mode 100644 index 0000000000000000000000000000000000000000..cf06510f85d98380ebf62ad4b4ca5116a02f4f61 GIT binary patch literal 320 zcmbym#l-*cEQvmUrZlxv^6o9O zHOq~jWxfans&Pn6N=`{lOV7y6%FfBn%P%M_DlRE4E3c@ma&&TbadmU|@bvQb@%8f$ d2n-4i2@MO6h>S8YFfcSSHZe6bx3Gk{0|2G3VE_OC literal 0 HcmV?d00001 diff --git a/fuzz/corpus/opSetOptionsRemoveHashXSigner.raw b/fuzz/corpus/opSetOptionsRemoveHashXSigner.raw new file mode 100644 index 0000000000000000000000000000000000000000..2d7216af19a410f89610ab93b3d33d50b6640682 GIT binary patch literal 252 zcmbnSpO;@5pJGXVKoOl1H7 literal 0 HcmV?d00001 diff --git a/fuzz/corpus/opSetOptionsRemovePublicKeySigner.raw b/fuzz/corpus/opSetOptionsRemovePublicKeySigner.raw new file mode 100644 index 0000000000000000000000000000000000000000..db255bae7aee4ce923131d73085d1292b682228e GIT binary patch literal 252 zcmb(Q}B{@DSu)x1B&#Q*Rti9Ua(G__Om?k%%5 N%Z;98z6gbx0RY-nOHu#; literal 0 HcmV?d00001 diff --git a/fuzz/corpus/opSetOptionsWithEmptyBody.raw b/fuzz/corpus/opSetOptionsWithEmptyBody.raw new file mode 100644 index 0000000000000000000000000000000000000000..61d6cb36649600c907fa4e57772c9ea089128ef4 GIT binary patch literal 212 zcmbamMS$^%lDcNt?iyXdxQ@JmC6sUv+h?zlZ E0mw64%m4rY literal 0 HcmV?d00001 diff --git a/fuzz/corpus/opSetTrustLineFlagsAuthorizedAndClawbackEnabled.raw b/fuzz/corpus/opSetTrustLineFlagsAuthorizedAndClawbackEnabled.raw new file mode 100644 index 0000000000000000000000000000000000000000..4a1d386f5cbdda40ab8087d37c4093dc3d7eff2a GIT binary patch literal 264 zcmbamMS$^%lDcNt?iyXdxQ@JmC6sQE`H&&2Z E0LUv`%m4rY literal 0 HcmV?d00001 diff --git a/fuzz/corpus/opSetTrustLineFlagsAuthorizedToMaintainLiabilities.raw b/fuzz/corpus/opSetTrustLineFlagsAuthorizedToMaintainLiabilities.raw new file mode 100644 index 0000000000000000000000000000000000000000..48b09bc0b22a643a3e3ab93bb8b6db6e52c90edf GIT binary patch literal 264 zcmbamMS$^%lDcNt?iyXdxQ@JmC6sUw1h{65? E0LV97%m4rY literal 0 HcmV?d00001 diff --git a/fuzz/corpus/opSetTrustLineFlagsUnauthorized.raw b/fuzz/corpus/opSetTrustLineFlagsUnauthorized.raw new file mode 100644 index 0000000000000000000000000000000000000000..8d2db2f7aa43252047811626fbef5ae911cbb697 GIT binary patch literal 264 zcmbamMS$^%lDcNt?iyXdxQ@JmC6sUw9qz(iC D$Uj`n literal 0 HcmV?d00001 diff --git a/fuzz/corpus/opSourceOmitOpSourceEqualSignerNotEqualTxSource.raw b/fuzz/corpus/opSourceOmitOpSourceEqualSignerNotEqualTxSource.raw new file mode 100644 index 0000000000000000000000000000000000000000..8027a3c5ee3fd1c415945166bdfd29166fcb3016 GIT binary patch literal 184 zcmbhBe7$i1*P^4v=Hc{Rs*o^N~@@=@gMKR>s;vmm`d NrE(A69^e9L1OQHtJPH5+ literal 0 HcmV?d00001 diff --git a/fuzz/corpus/opSourceOmitTxMuxedSourceEqualOpMuxedSourceEqualSigner.raw b/fuzz/corpus/opSourceOmitTxMuxedSourceEqualOpMuxedSourceEqualSigner.raw new file mode 100644 index 0000000000000000000000000000000000000000..b6c6e9a1d02492fee6d547fa9befe43847bfc8fc GIT binary patch literal 200 zcmbium89+8nBSium89+8nBSh15dc=JJwyNi literal 0 HcmV?d00001 diff --git a/fuzz/corpus/opSourceOmitTxSourceEqualOpMuxedSourceEqualSigner.raw b/fuzz/corpus/opSourceOmitTxSourceEqualOpMuxedSourceEqualSigner.raw new file mode 100644 index 0000000000000000000000000000000000000000..385f043455f50895829ad967195825fe2291bd89 GIT binary patch literal 192 zcmb*03hl;L;wH) literal 0 HcmV?d00001 diff --git a/fuzz/corpus/opSourceOmitTxSourceEqualOpSourceEqualSigner.raw b/fuzz/corpus/opSourceOmitTxSourceEqualOpSourceEqualSigner.raw new file mode 100644 index 0000000000000000000000000000000000000000..08920f606f8de411582d7f01e12c82c194a35dd3 GIT binary patch literal 184 zcmbXI@ZWPJ7Bh&_otZnAD$)A=g*X;c1qs8WwvIy R(X-4Kp&-NS|3d(X4FHq`QvCn` literal 0 HcmV?d00001 diff --git a/fuzz/corpus/sorobanAuthCreateSmartContract.raw b/fuzz/corpus/sorobanAuthCreateSmartContract.raw new file mode 100644 index 0000000000000000000000000000000000000000..61652dca63e0ef948f04e6a69df87fc2f0edee24 GIT binary patch literal 168 zcmZQzVBoAeY&ku|&#?4T+Fm9V%S}4B#R7U5#q8Cdp4PGxa9vr+00f?;xvoqCC*}j0 zj37P?R4!d;y*{)sxk@qo*!tfk6R#g}^?P$^!}ce9=}h*V`D<>@mw#vC_xgrG?d$np dRKjoE7J3(~t|{@)#Db~t;1vNbkU7Mt0RS!vK5+m5 literal 0 HcmV?d00001 diff --git a/fuzz/corpus/sorobanAuthInvokeContract.raw b/fuzz/corpus/sorobanAuthInvokeContract.raw new file mode 100644 index 0000000000000000000000000000000000000000..46f9c4b40b0c253a040d228e6576facdea340afb GIT binary patch literal 552 zcmZQzVBoAeY&ku|&#?4T+Fm9V%S}4B#R7U5#q8Cdp4PGxa9vr+00f?;xvoqCC+36L zK)`r?Qg_jz0-N)%zQ3OT<-Ko!SLlkJm49Zt@+~^ywB_QtM4%dulA^@C;JKTy5pjh1Tms3zMr9 z!;h{1T{7|d5m&!Amo{vF!k5lu&zZjlsFn+2Dwt%-bYTTCn4n^eYu}%XT=!Hn<9kBl zl_`gUqDxcfFVW0O{W9~t=F^n&C)0rH2E?8BZ@qvz5lk_vZuxT~a^0a{$sW!<9^YeA?i2##FnXl-0A9JYH~;_u literal 0 HcmV?d00001 diff --git a/fuzz/corpus/sorobanAuthInvokeContractTestPlugin.raw b/fuzz/corpus/sorobanAuthInvokeContractTestPlugin.raw new file mode 100644 index 0000000000000000000000000000000000000000..73658e7b08b6617f4fb3b9d7c4ff408801d0fd52 GIT binary patch literal 552 zcmZQzVBoAeY&ku|&#?4T+Fm9V%S}4B#R7U5#q8Cdp4PGxa9vr+00f?;xvoqCC+36L zK)?v0@RA%Qsl_E}rFqFfRm?yv1XI1{!rJ2%$_)&Ax9z&5H*uzNXMI)sV}WxY1LAVH zxeG&7k=0f%U1+^Nv@p3!G5py2-z5{TA93}2b7{l&Cw%El_MG`^fNHs5<^pM^Ocz!V zmkBDyczsfL(V+sH^RK?Yp8w^&Z-7_mik+2zX1nq&I^neC;<-eiI*yW}#Ju9P)FL38 N-tL4tlVQ-i699+;q2d4l literal 0 HcmV?d00001 diff --git a/fuzz/corpus/sorobanAuthInvokeContractWithComplexSubInvocation.raw b/fuzz/corpus/sorobanAuthInvokeContractWithComplexSubInvocation.raw new file mode 100644 index 0000000000000000000000000000000000000000..3b53b0b01f31e670b78fde65257d1d17c0b60561 GIT binary patch literal 1008 zcmZQzVBoAeY&ku|&#?4T+Fm9V%S}4B#R7U5#q8Cdp4PGxa9vr+00f?;xvoqCC+36L zK)`r?Qg_jz0-N)%zQ3OT<-Ko!SLlkJm49Zt@+~^ywB_QtM4%ehw9>p}1F&)iMj*un zVS-7fOcz!Vg9$1|w0VXQ4YYG{F>u84p}unq`ULRVRT%{O(Z2j+&iPw*~`n|cdVfz!lbS8Vw{53$eTrhKiG*hMvD-xGT IKMtTf0WXV`ssI20 literal 0 HcmV?d00001 diff --git a/fuzz/corpus/sorobanAuthPublic.raw b/fuzz/corpus/sorobanAuthPublic.raw new file mode 100644 index 0000000000000000000000000000000000000000..4e658449e505ee0db532be01a34599167a2ae18e GIT binary patch literal 216 zcmZQzVBoAeY&ku|&#?4T+Fm9V%S}4B#R7U5#q8Cdp4PGxa9vr+00f?;xvoqCC+36L zK)`r?Qg_jz0-N)%zQ3OT<-Ko!SLlkJm49Zt@+~^ywB_QtM4%dulA^@C;JKTy5pjh1Tms3zMr9 o!;h{1T{7|d5m&!Amo{vF!k5lu&zZjlsFn+2Dwt%-bYTTE0P`S5ng9R* literal 0 HcmV?d00001 diff --git a/fuzz/corpus/sorobanAuthTestnet.raw b/fuzz/corpus/sorobanAuthTestnet.raw new file mode 100644 index 0000000000000000000000000000000000000000..ddfd6892ee1d7fe573d94bc4c7affc3ee0d74b67 GIT binary patch literal 216 zcmZQzVBkFWz(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7=XaDG}o0$;KY0o z8weP$PwFl@RA6)d)%Vx)zr6Pi@CseAv+~buSH49joVHv%mk3nDQBstcSDcm#($5UU zLO=`#Yc8xkUZLE;uy@<8OL`M$DtFdbwLca(_c0(Yhnu@FL=~tAuC{XNLhJRRg~?Tl o;m6khE}3}!h^yb5OB=R7;Y(+-=geONRLcc16-+W^y0C&70E|yc6951J literal 0 HcmV?d00001 diff --git a/fuzz/corpus/sorobanAuthUnknownNetwork.raw b/fuzz/corpus/sorobanAuthUnknownNetwork.raw new file mode 100644 index 0000000000000000000000000000000000000000..7acb2116ece69b1a134d67b74417c0cb32ebb43c GIT binary patch literal 216 zcmZQzVBmaEyjN%z!=L+^zMDFY*6FU<`hoXl`?}*Df4uGNdFw9!VE_Wp(p*<2ffMsV zY#?B~KB>FtP=U?)SKnXH|MK29z$R|-w!vgS$Gu!i+?4P`r zcV^)QpEDD_vj)mEcdeanvSiV3-YVul^)F@t%~N1xVrF4wW9Q)H;^yJy;};MV5*85^ z6PJ*bl9rK`lUD$$0olQwk(!f}uTY*}l#>GFg2ljg6X6%Ix<|(v`DX{rR`dQ86aT}r fB>McB($r4LySL2NEH`?V`63i#C>YF`)&QabPVZed literal 0 HcmV?d00001 diff --git a/fuzz/corpus/txCondExtraSignersWithTwoSigners.raw b/fuzz/corpus/txCondExtraSignersWithTwoSigners.raw new file mode 100644 index 0000000000000000000000000000000000000000..95422d9a5932356e3142d641b9ed419cb804e874 GIT binary patch literal 368 zcmbR|-w!vb)LgY03p=P}to zc`fhE!V5lUCVXcNlxgl-JKbc-qTjq#%zx@%%mS)WU}R!uVP#|I;N;@w;pO8O5EK#? z5fu}ckd%^^k(HBI0NEL&d@(ZRwCc`Y@%txFPxW#(Osw9u`WuFk@N+hz0-*N^JiC literal 0 HcmV?d00001 diff --git a/fuzz/corpus/txCondIsNone.raw b/fuzz/corpus/txCondIsNone.raw new file mode 100644 index 0000000000000000000000000000000000000000..77cd615e4e0a8103c6e14db2344ce405dcf37bbc GIT binary patch literal 224 zcmblZX9vty^ZpbQ|HHE+`uv&F a)K1B}x6IZoH+q)&A{3+s3}#Gg0MP)mGgk%x literal 0 HcmV?d00001 diff --git a/fuzz/corpus/txCondLedgerBounds.raw b/fuzz/corpus/txCondLedgerBounds.raw new file mode 100644 index 0000000000000000000000000000000000000000..ff80e029fd727b42d5b83ba3750901bd00ae673d GIT binary patch literal 268 zcmbR|-wLj#OV={qc#(szP{ zvB|@fgXFj~Qgd?h70UCAa#CRG!Fq^r3s~KwV~zZ?17@pve~O9!;aL)W{!D3Vr{vvR VW^0xkJR|-wLj%ZS$ZRxa3?Mn~ zjMSW*e1-D-qMQ_vJV*?zhX}WT)jc}a$Ui$^wwm{+nD`%_CDG^4l%{q{-o0hEX1UR` Q%om{`L&0Fiv<46j02FFVKmY&$ literal 0 HcmV?d00001 diff --git a/fuzz/corpus/txCondLedgerBoundsMaxIsZero.raw b/fuzz/corpus/txCondLedgerBoundsMaxIsZero.raw new file mode 100644 index 0000000000000000000000000000000000000000..d8f3d5b8b1db495675633b3dc9ce9d051e5c9006 GIT binary patch literal 268 zcmbR|-wLj#OV={qc-V%X$i z%0Y768L2rr`3mLvML8)TagZ2T4-swwt9x{;k$-l;Y&GvsG4VenJ+>?hJwM2X$>G60OTi3nE(I) literal 0 HcmV?d00001 diff --git a/fuzz/corpus/txCondLedgerBoundsMinIsZero.raw b/fuzz/corpus/txCondLedgerBoundsMinIsZero.raw new file mode 100644 index 0000000000000000000000000000000000000000..584033f6614568275c6157931ad89e4cc1ada32e GIT binary patch literal 268 zcmbR|-wLjzzjru3a4VQlg+ zR|-w!vYu?^K*_fFtAR* zCI=Mb&PdJ4$yX@PFUm;)DFK-SHj4;1fYm)Z*2q6QV78j~rR|-w!vavmlYGR|-w!ve60%R$wFlZX9vty^ZpbQ|HHE+`uv&F)K1B}x6IZo SH+q)&A{1mO7|fW~0HOi&H}JOBUy literal 0 HcmV?d00001 diff --git a/fuzz/corpus/txCondTimeBoundsIsNone.raw b/fuzz/corpus/txCondTimeBoundsIsNone.raw new file mode 100644 index 0000000000000000000000000000000000000000..d5ba4e0ba132a8b67c20b7ae9f9dd8748ed858fe GIT binary patch literal 268 zcmbgJ=OzAr;n9_FwnGB2| z0ta9Tw-MOr@yGl4?dc&rPv$PtH2AXTN*5dNag*v7ek;G~&IjrP=?9xZgj>Ms9vy4s ppB*q;&HGbK{14BP=<{bvQ#&Q^-ZERW+~`^6i%_^*W=v}Uu>mztS%m-q literal 0 HcmV?d00001 diff --git a/fuzz/corpus/txCondTimeBoundsMaxIsZero.raw b/fuzz/corpus/txCondTimeBoundsMaxIsZero.raw new file mode 100644 index 0000000000000000000000000000000000000000..10365863dde3ba4bc21a02066991a47ec8e27b10 GIT binary patch literal 224 zcmbR|-wOS%-|2%?jxt&#y! zj7;e}ESS=Ff`k|u^K*_fFtAPlaguz~_X8<8AO_nPqlZX9vty^ZpbQ|HHE+`uv&F)K1B}x6IZoH+q)&A{1mO7|fW~0HOg< CCwDFY literal 0 HcmV?d00001 diff --git a/fuzz/corpus/txCustomBaseFee.raw b/fuzz/corpus/txCustomBaseFee.raw new file mode 100644 index 0000000000000000000000000000000000000000..a3b4aafdec06ee5d85ec0cc81c4949830f589f8d GIT binary patch literal 316 zcmbK+|ye)}@7^+7v)t%e=8I668yIFxYXGqU$BJ0R literal 0 HcmV?d00001 diff --git a/fuzz/corpus/txMemoId.raw b/fuzz/corpus/txMemoId.raw new file mode 100644 index 0000000000000000000000000000000000000000..e218c691a60cb7d2c1b6a5009363f728d05efd85 GIT binary patch literal 216 zcmbnJ+?Nb}`JD)&ODy E09A)jjQ{`u literal 0 HcmV?d00001 diff --git a/fuzz/corpus/txMemoNone.raw b/fuzz/corpus/txMemoNone.raw new file mode 100644 index 0000000000000000000000000000000000000000..376b8e072e0c875ba9b19119a44b86d68685dc7e GIT binary patch literal 208 zcmblZX9vty^ZpbQ|HHE+`uv&F)K1B}x6IZoH+q)&A{1r^!;EPSAT|K>wn&oz literal 0 HcmV?d00001 diff --git a/fuzz/corpus/txMemoReturnHash.raw b/fuzz/corpus/txMemoReturnHash.raw new file mode 100644 index 0000000000000000000000000000000000000000..01421539fd6dd9bafc57d14dd6bc62faab9b70b0 GIT binary patch literal 240 zcmbK+|ye)}@7^+7v)t%e=8I668yIFxYXGqU$PZY? literal 0 HcmV?d00001 diff --git a/fuzz/corpus/txMemoText.raw b/fuzz/corpus/txMemoText.raw new file mode 100644 index 0000000000000000000000000000000000000000..c7423e6394907ee4ffd610cf6bdba1b42f623695 GIT binary patch literal 240 zcmbSrUEzOlfMT YGY008<>UH||9 literal 0 HcmV?d00001 diff --git a/fuzz/corpus/txMemoTextUnprintable.raw b/fuzz/corpus/txMemoTextUnprintable.raw new file mode 100644 index 0000000000000000000000000000000000000000..511b1174d212e55a004988415290a593deaddef3 GIT binary patch literal 240 zcmb z|IBAI)<44AadX{%&_Y>*gt zMruw@zCw9^QBDd-ni(oig!vFNA02DtpB*q;&HGbK{14BP=<{bvQ#&Q^-ZERW+~`^6 zi%^iE_5UG&24*ulg*bz(U{G_DaSGV@{#jGVqc`R;=hQE2x3tw>S(eks)Yn#LwlUwyXB_SK3^6^`aP3=9lRK+N#cxMTNU{k?(> zxfk|Eo?FR2ujV+<^NkNfK8l?E=jWDp7N{hJv7mN=VcvlZAe#}S2L_U-t&#zh15dg0rKiB{O literal 0 HcmV?d00001 diff --git a/fuzz/corpus/txNetworkPublic.raw b/fuzz/corpus/txNetworkPublic.raw new file mode 100644 index 0000000000000000000000000000000000000000..08920f606f8de411582d7f01e12c82c194a35dd3 GIT binary patch literal 184 zcmbsfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBQ>amVhz`g;W% zaxd(SJhzg4Ud?fy=Nlh}d=xqR&(AIIEKo@bV?pf#!@L6-KsF;t4-6zvTO|WzgT%Nq hQgd?h70UCAa#BFjATh97BFyIoDwTWi_5c@1BLEARK!pGR literal 0 HcmV?d00001 diff --git a/fuzz/corpus/txSourceOmitMuxedSourceEqualSigner.raw b/fuzz/corpus/txSourceOmitMuxedSourceEqualSigner.raw new file mode 100644 index 0000000000000000000000000000000000000000..d2d2ed4fc0fe1f304cc9c359a4eb3bdf9291040b GIT binary patch literal 192 zcmbium89+8nBSh15dc=JJwyNi literal 0 HcmV?d00001 diff --git a/fuzz/corpus/txSourceOmitSourceEqualSigner.raw b/fuzz/corpus/txSourceOmitSourceEqualSigner.raw new file mode 100644 index 0000000000000000000000000000000000000000..08920f606f8de411582d7f01e12c82c194a35dd3 GIT binary patch literal 184 zcmbium89+8nBS/dev/null 2>&1 && pwd )" +BUILDDIR="$SCRIPTDIR/cmake-build-fuzz-coverage" +CORPUSDIR="$SCRIPTDIR/corpus" +HTMLCOVDIR="$SCRIPTDIR/html-coverage" + +# Compile the fuzzer with code coverage support +rm -rf "$BUILDDIR" "$HTMLCOVDIR" +cmake -DBOLOS_SDK=/opt/ledger-secure-sdk -DCMAKE_C_COMPILER=clang -DCODE_COVERAGE=1 -B"$BUILDDIR" -H. +cmake --build "$BUILDDIR" --target fuzz_tx + +# Run the fuzzer on the corpus files +export LLVM_PROFILE_FILE="$BUILDDIR/fuzz_tx.%p.profraw" +# "$BUILDDIR/fuzz_tx" "$CORPUSDIR"/* +"$BUILDDIR/fuzz_tx" -rss_limit_mb=1024 -max_len=20000 -max_total_time=600 -print_final_stats=1 "$CORPUSDIR" -jobs=4 -workers=4 +llvm-profdata merge --sparse "$BUILDDIR"/fuzz_tx.*.profraw -o "$BUILDDIR/fuzz_tx.profdata" + +# Exclude lib_standard_app directory, base32 and base64 code from coverage report +llvm-cov show "$BUILDDIR/fuzz_tx" -instr-profile="$BUILDDIR/fuzz_tx.profdata" -show-line-counts-or-regions -output-dir="$HTMLCOVDIR" -format=html -ignore-filename-regex="(.*lib_standard_app.*)|(.*libstellar/base64\.c.*)|(.*libstellar/base32\.c.*)" +llvm-cov report "$BUILDDIR/fuzz_tx" -instr-profile="$BUILDDIR/fuzz_tx.profdata" -ignore-filename-regex="(.*lib_standard_app.*)|(.*libstellar/base64\.c.*)|(.*libstellar/base32\.c.*)"