Coverage Report

Created: 2026-04-20 22:07

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/root/bitcoin/src/test/fuzz/secp256k1_ecdsa_signature_parse_der_lax.cpp
Line
Count
Source
1
// Copyright (c) 2020-present The Bitcoin Core developers
2
// Distributed under the MIT software license, see the accompanying
3
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
4
5
#include <key.h>
6
#include <secp256k1.h>
7
#include <test/fuzz/FuzzedDataProvider.h>
8
#include <test/fuzz/fuzz.h>
9
#include <test/fuzz/util.h>
10
#include <test/util/random.h>
11
12
#include <cstdint>
13
#include <vector>
14
15
bool SigHasLowR(const secp256k1_ecdsa_signature* sig);
16
int ecdsa_signature_parse_der_lax(secp256k1_ecdsa_signature* sig, const unsigned char* input, size_t inputlen);
17
18
FUZZ_TARGET(secp256k1_ecdsa_signature_parse_der_lax)
19
86
{
20
86
    SeedRandomStateForTest(SeedRand::ZEROS);
21
86
    FuzzedDataProvider fuzzed_data_provider{buffer.data(), buffer.size()};
22
86
    const std::vector<uint8_t> signature_bytes = ConsumeRandomLengthByteVector(fuzzed_data_provider);
23
86
    if (signature_bytes.data() == nullptr) {
24
1
        return;
25
1
    }
26
85
    secp256k1_ecdsa_signature sig_der_lax;
27
85
    const bool parsed_der_lax = ecdsa_signature_parse_der_lax(&sig_der_lax, signature_bytes.data(), signature_bytes.size()) == 1;
28
85
    if (parsed_der_lax) {
29
42
        ECC_Context ecc_context{};
30
42
        (void)SigHasLowR(&sig_der_lax);
31
42
    }
32
85
}