/src/curl_fuzzer/proto_fuzzer/profile_fuzzer.h
Line | Count | Source |
1 | | /* |
2 | | * Copyright (C) Max Dymond, <cmeister2@gmail.com>, et al. |
3 | | * |
4 | | * SPDX-License-Identifier: curl |
5 | | */ |
6 | | |
7 | | /// @file |
8 | | /// @brief Type-safe libprotobuf-mutator hooks for one generated target profile. |
9 | | |
10 | | #ifndef PROTO_FUZZER_PROFILE_FUZZER_H_ |
11 | | #define PROTO_FUZZER_PROFILE_FUZZER_H_ |
12 | | |
13 | | #include <libprotobuf-mutator/src/libfuzzer/libfuzzer_macro.h> |
14 | | |
15 | | #include <array> |
16 | | #include <cstddef> |
17 | | #include <cstdint> |
18 | | |
19 | | #include "curl_fuzzer.pb.h" |
20 | | #include "proto_fuzzer/target_policy.h" |
21 | | #include "proto_fuzzer/target_profile.h" |
22 | | |
23 | | namespace proto_fuzzer { |
24 | | |
25 | | /// Ordinary runtime binding for one generated protobuf profile. |
26 | | /// |
27 | | /// A single binding owns the target profile and every typed LPM callback. This |
28 | | /// keeps libFuzzer entrypoints non-template while guaranteeing mutation, |
29 | | /// crossover, and loading all use the same concrete protobuf message type. |
30 | | struct ProfileFuzzerTraits { |
31 | | /// libFuzzer custom-mutator callback for the bound message type. |
32 | | using CustomMutator = std::size_t (*)(std::uint8_t*, std::size_t, std::size_t, unsigned int); |
33 | | /// libFuzzer custom-crossover callback for the bound message type. |
34 | | using CustomCrossOver = std::size_t (*)(const std::uint8_t*, std::size_t, const std::uint8_t*, std::size_t, |
35 | | std::uint8_t*, std::size_t, unsigned int); |
36 | | /// Parse and lower one input using the bound message type. |
37 | | using InputLoader = bool (*)(const std::uint8_t*, std::size_t, curl::fuzzer::proto::Scenario*); |
38 | | /// Optional profiling-only callback that exercises typed mutation helpers. |
39 | | using MutationProbe = void (*)(); |
40 | | |
41 | | /// Runtime policy permanently associated with all callbacks. |
42 | | TargetProfile profile; |
43 | | /// Typed mutation callback. |
44 | | CustomMutator custom_mutator; |
45 | | /// Typed crossover callback. |
46 | | CustomCrossOver custom_crossover; |
47 | | /// Typed parse-and-lower callback. |
48 | | InputLoader load_input; |
49 | | /// Timing-profile probe, or nullptr for ordinary profiles. |
50 | | MutationProbe probe_mutation_helpers; |
51 | | }; |
52 | | |
53 | | /// Bind all LPM operations for one process to one protobuf message type. |
54 | | /// |
55 | | /// Traits must provide: |
56 | | /// |
57 | | /// - `using Message` for the generated profile root; |
58 | | /// - `static constexpr TargetProfile kProfile`; |
59 | | /// - `Lower(Message*, curl::fuzzer::proto::Scenario*)`; and |
60 | | /// - `Lift(curl::fuzzer::proto::Scenario*, Message*)`; and |
61 | | /// - `PruneConditionalEligibility(curl::fuzzer::proto::Scenario*, |
62 | | /// TargetProfile)`. |
63 | | /// |
64 | | /// Lower and Lift transfer fields directly. They must not serialize, reparse, |
65 | | /// reflection-swap unlike message types, or retain pointers into the source. |
66 | | /// Keeping the same Message in mutation, crossover, and loading is required by |
67 | | /// LPM's process-wide last-mutation cache. |
68 | | template <typename Traits> |
69 | | class ProfileFuzzerHooks { |
70 | | public: |
71 | | /// Concrete generated protobuf root for this target profile. |
72 | | using Message = typename Traits::Message; |
73 | | /// Shared internal Scenario consumed by the runtime. |
74 | | using RuntimeScenario = curl::fuzzer::proto::Scenario; |
75 | | |
76 | | /// Register the profile postprocessor before the first LPM operation. |
77 | 245k | static void EnsurePostProcessor() { |
78 | 245k | static const protobuf_mutator::libfuzzer::PostProcessorRegistration<Message> registration( |
79 | 245k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); });proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastTelnetTraits>::EnsurePostProcessor()::{lambda(curl::fuzzer::generated::fast_telnet::FastTelnetScenario*, unsigned int)#1}::operator()(curl::fuzzer::generated::fast_telnet::FastTelnetScenario*, unsigned int) constLine | Count | Source | 79 | 4.40k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastFtpTraits>::EnsurePostProcessor()::{lambda(curl::fuzzer::generated::fast_ftp::FastFtpScenario*, unsigned int)#1}::operator()(curl::fuzzer::generated::fast_ftp::FastFtpScenario*, unsigned int) constLine | Count | Source | 79 | 6.10k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastSmtpTraits>::EnsurePostProcessor()::{lambda(curl::fuzzer::generated::fast_smtp::FastSmtpScenario*, unsigned int)#1}::operator()(curl::fuzzer::generated::fast_smtp::FastSmtpScenario*, unsigned int) constLine | Count | Source | 79 | 4.84k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::HttpsH2Traits>::EnsurePostProcessor()::{lambda(curl::fuzzer::generated::https_h2::HttpsH2Scenario*, unsigned int)#1}::operator()(curl::fuzzer::generated::https_h2::HttpsH2Scenario*, unsigned int) constLine | Count | Source | 79 | 12.0k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastTftpTraits>::EnsurePostProcessor()::{lambda(curl::fuzzer::generated::fast_tftp::FastTftpScenario*, unsigned int)#1}::operator()(curl::fuzzer::generated::fast_tftp::FastTftpScenario*, unsigned int) constLine | Count | Source | 79 | 2.23k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastWebSocketTraits>::EnsurePostProcessor()::{lambda(curl::fuzzer::generated::fast_websocket::FastWebSocketScenario*, unsigned int)#1}::operator()(curl::fuzzer::generated::fast_websocket::FastWebSocketScenario*, unsigned int) constLine | Count | Source | 79 | 9.14k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastDictTraits>::EnsurePostProcessor()::{lambda(curl::fuzzer::generated::fast_dict::FastDictScenario*, unsigned int)#1}::operator()(curl::fuzzer::generated::fast_dict::FastDictScenario*, unsigned int) constLine | Count | Source | 79 | 3.21k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::DeepHttpTraits>::EnsurePostProcessor()::{lambda(curl::fuzzer::generated::deep_http::DeepHttpScenario*, unsigned int)#1}::operator()(curl::fuzzer::generated::deep_http::DeepHttpScenario*, unsigned int) constLine | Count | Source | 79 | 12.6k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastIpfsTraits>::EnsurePostProcessor()::{lambda(curl::fuzzer::generated::fast_ipfs::FastIpfsScenario*, unsigned int)#1}::operator()(curl::fuzzer::generated::fast_ipfs::FastIpfsScenario*, unsigned int) constLine | Count | Source | 79 | 9.29k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastHttpsTraits>::EnsurePostProcessor()::{lambda(curl::fuzzer::generated::fast_https::FastHttpsScenario*, unsigned int)#1}::operator()(curl::fuzzer::generated::fast_https::FastHttpsScenario*, unsigned int) constLine | Count | Source | 79 | 27.2k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastImapTraits>::EnsurePostProcessor()::{lambda(curl::fuzzer::generated::fast_imap::FastImapScenario*, unsigned int)#1}::operator()(curl::fuzzer::generated::fast_imap::FastImapScenario*, unsigned int) constLine | Count | Source | 79 | 5.14k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastGopherTraits>::EnsurePostProcessor()::{lambda(curl::fuzzer::generated::fast_gopher::FastGopherScenario*, unsigned int)#1}::operator()(curl::fuzzer::generated::fast_gopher::FastGopherScenario*, unsigned int) constLine | Count | Source | 79 | 7.56k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastFileTraits>::EnsurePostProcessor()::{lambda(curl::fuzzer::generated::fast_file::FastFileScenario*, unsigned int)#1}::operator()(curl::fuzzer::generated::fast_file::FastFileScenario*, unsigned int) constLine | Count | Source | 79 | 3.57k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::TimingTraits>::EnsurePostProcessor()::{lambda(curl::fuzzer::generated::timing::TimingScenario*, unsigned int)#1}::operator()(curl::fuzzer::generated::timing::TimingScenario*, unsigned int) constLine | Count | Source | 79 | 10.0k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastPop3Traits>::EnsurePostProcessor()::{lambda(curl::fuzzer::generated::fast_pop3::FastPop3Scenario*, unsigned int)#1}::operator()(curl::fuzzer::generated::fast_pop3::FastPop3Scenario*, unsigned int) constLine | Count | Source | 79 | 3.82k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::MultiTraits>::EnsurePostProcessor()::{lambda(curl::fuzzer::generated::multi::MultiScenario*, unsigned int)#1}::operator()(curl::fuzzer::generated::multi::MultiScenario*, unsigned int) constLine | Count | Source | 79 | 12.1k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastHttp3Traits>::EnsurePostProcessor()::{lambda(curl::fuzzer::generated::fast_http3::FastHttp3Scenario*, unsigned int)#1}::operator()(curl::fuzzer::generated::fast_http3::FastHttp3Scenario*, unsigned int) constLine | Count | Source | 79 | 6.67k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::CompatibilityTraits>::EnsurePostProcessor()::{lambda(curl::fuzzer::generated::compatibility::CompatibilityScenario*, unsigned int)#1}::operator()(curl::fuzzer::generated::compatibility::CompatibilityScenario*, unsigned int) constLine | Count | Source | 79 | 12.0k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::ResolverTraits>::EnsurePostProcessor()::{lambda(curl::fuzzer::generated::resolver::ResolverScenario*, unsigned int)#1}::operator()(curl::fuzzer::generated::resolver::ResolverScenario*, unsigned int) constLine | Count | Source | 79 | 7.85k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::ProxyTransportTraits>::EnsurePostProcessor()::{lambda(curl::fuzzer::generated::proxy_transport::ProxyTransportScenario*, unsigned int)#1}::operator()(curl::fuzzer::generated::proxy_transport::ProxyTransportScenario*, unsigned int) constLine | Count | Source | 79 | 7.95k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastHttp2Traits>::EnsurePostProcessor()::{lambda(curl::fuzzer::generated::fast_http2::FastHttp2Scenario*, unsigned int)#1}::operator()(curl::fuzzer::generated::fast_http2::FastHttp2Scenario*, unsigned int) constLine | Count | Source | 79 | 14.7k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastHttpTraits>::EnsurePostProcessor()::{lambda(curl::fuzzer::generated::fast_http::FastHttpScenario*, unsigned int)#1}::operator()(curl::fuzzer::generated::fast_http::FastHttpScenario*, unsigned int) constLine | Count | Source | 79 | 12.2k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::ApiTraits>::EnsurePostProcessor()::{lambda(curl::fuzzer::generated::api::ApiScenario*, unsigned int)#1}::operator()(curl::fuzzer::generated::api::ApiScenario*, unsigned int) constLine | Count | Source | 79 | 11.7k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastLdapTraits>::EnsurePostProcessor()::{lambda(curl::fuzzer::generated::fast_ldap::FastLdapScenario*, unsigned int)#1}::operator()(curl::fuzzer::generated::fast_ldap::FastLdapScenario*, unsigned int) constLine | Count | Source | 79 | 5.76k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastRtspTraits>::EnsurePostProcessor()::{lambda(curl::fuzzer::generated::fast_rtsp::FastRtspScenario*, unsigned int)#1}::operator()(curl::fuzzer::generated::fast_rtsp::FastRtspScenario*, unsigned int) constLine | Count | Source | 79 | 6.30k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastMqttTraits>::EnsurePostProcessor()::{lambda(curl::fuzzer::generated::fast_mqtt::FastMqttScenario*, unsigned int)#1}::operator()(curl::fuzzer::generated::fast_mqtt::FastMqttScenario*, unsigned int) constLine | Count | Source | 79 | 4.04k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastSecureWebSocketTraits>::EnsurePostProcessor()::{lambda(curl::fuzzer::generated::fast_secure_websocket::FastSecureWebSocketScenario*, unsigned int)#1}::operator()(curl::fuzzer::generated::fast_secure_websocket::FastSecureWebSocketScenario*, unsigned int) constLine | Count | Source | 79 | 7.34k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::H2ProxyTraits>::EnsurePostProcessor()::{lambda(curl::fuzzer::generated::h2_proxy::H2ProxyScenario*, unsigned int)#1}::operator()(curl::fuzzer::generated::h2_proxy::H2ProxyScenario*, unsigned int) constLine | Count | Source | 79 | 10.7k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); |
|
80 | 245k | (void)registration; |
81 | 245k | } proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastTelnetTraits>::EnsurePostProcessor() Line | Count | Source | 77 | 4.47k | static void EnsurePostProcessor() { | 78 | 4.47k | static const protobuf_mutator::libfuzzer::PostProcessorRegistration<Message> registration( | 79 | 4.47k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); | 80 | 4.47k | (void)registration; | 81 | 4.47k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastFtpTraits>::EnsurePostProcessor() Line | Count | Source | 77 | 6.18k | static void EnsurePostProcessor() { | 78 | 6.18k | static const protobuf_mutator::libfuzzer::PostProcessorRegistration<Message> registration( | 79 | 6.18k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); | 80 | 6.18k | (void)registration; | 81 | 6.18k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastSmtpTraits>::EnsurePostProcessor() Line | Count | Source | 77 | 4.98k | static void EnsurePostProcessor() { | 78 | 4.98k | static const protobuf_mutator::libfuzzer::PostProcessorRegistration<Message> registration( | 79 | 4.98k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); | 80 | 4.98k | (void)registration; | 81 | 4.98k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::HttpsH2Traits>::EnsurePostProcessor() Line | Count | Source | 77 | 12.3k | static void EnsurePostProcessor() { | 78 | 12.3k | static const protobuf_mutator::libfuzzer::PostProcessorRegistration<Message> registration( | 79 | 12.3k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); | 80 | 12.3k | (void)registration; | 81 | 12.3k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastTftpTraits>::EnsurePostProcessor() Line | Count | Source | 77 | 2.28k | static void EnsurePostProcessor() { | 78 | 2.28k | static const protobuf_mutator::libfuzzer::PostProcessorRegistration<Message> registration( | 79 | 2.28k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); | 80 | 2.28k | (void)registration; | 81 | 2.28k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastWebSocketTraits>::EnsurePostProcessor() Line | Count | Source | 77 | 9.25k | static void EnsurePostProcessor() { | 78 | 9.25k | static const protobuf_mutator::libfuzzer::PostProcessorRegistration<Message> registration( | 79 | 9.25k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); | 80 | 9.25k | (void)registration; | 81 | 9.25k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastDictTraits>::EnsurePostProcessor() Line | Count | Source | 77 | 3.26k | static void EnsurePostProcessor() { | 78 | 3.26k | static const protobuf_mutator::libfuzzer::PostProcessorRegistration<Message> registration( | 79 | 3.26k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); | 80 | 3.26k | (void)registration; | 81 | 3.26k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::DeepHttpTraits>::EnsurePostProcessor() Line | Count | Source | 77 | 12.8k | static void EnsurePostProcessor() { | 78 | 12.8k | static const protobuf_mutator::libfuzzer::PostProcessorRegistration<Message> registration( | 79 | 12.8k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); | 80 | 12.8k | (void)registration; | 81 | 12.8k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastIpfsTraits>::EnsurePostProcessor() Line | Count | Source | 77 | 9.35k | static void EnsurePostProcessor() { | 78 | 9.35k | static const protobuf_mutator::libfuzzer::PostProcessorRegistration<Message> registration( | 79 | 9.35k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); | 80 | 9.35k | (void)registration; | 81 | 9.35k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastHttpsTraits>::EnsurePostProcessor() Line | Count | Source | 77 | 27.7k | static void EnsurePostProcessor() { | 78 | 27.7k | static const protobuf_mutator::libfuzzer::PostProcessorRegistration<Message> registration( | 79 | 27.7k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); | 80 | 27.7k | (void)registration; | 81 | 27.7k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastImapTraits>::EnsurePostProcessor() Line | Count | Source | 77 | 5.28k | static void EnsurePostProcessor() { | 78 | 5.28k | static const protobuf_mutator::libfuzzer::PostProcessorRegistration<Message> registration( | 79 | 5.28k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); | 80 | 5.28k | (void)registration; | 81 | 5.28k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastGopherTraits>::EnsurePostProcessor() Line | Count | Source | 77 | 7.65k | static void EnsurePostProcessor() { | 78 | 7.65k | static const protobuf_mutator::libfuzzer::PostProcessorRegistration<Message> registration( | 79 | 7.65k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); | 80 | 7.65k | (void)registration; | 81 | 7.65k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastFileTraits>::EnsurePostProcessor() Line | Count | Source | 77 | 3.61k | static void EnsurePostProcessor() { | 78 | 3.61k | static const protobuf_mutator::libfuzzer::PostProcessorRegistration<Message> registration( | 79 | 3.61k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); | 80 | 3.61k | (void)registration; | 81 | 3.61k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::TimingTraits>::EnsurePostProcessor() Line | Count | Source | 77 | 10.2k | static void EnsurePostProcessor() { | 78 | 10.2k | static const protobuf_mutator::libfuzzer::PostProcessorRegistration<Message> registration( | 79 | 10.2k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); | 80 | 10.2k | (void)registration; | 81 | 10.2k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastPop3Traits>::EnsurePostProcessor() Line | Count | Source | 77 | 3.88k | static void EnsurePostProcessor() { | 78 | 3.88k | static const protobuf_mutator::libfuzzer::PostProcessorRegistration<Message> registration( | 79 | 3.88k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); | 80 | 3.88k | (void)registration; | 81 | 3.88k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::MultiTraits>::EnsurePostProcessor() Line | Count | Source | 77 | 12.3k | static void EnsurePostProcessor() { | 78 | 12.3k | static const protobuf_mutator::libfuzzer::PostProcessorRegistration<Message> registration( | 79 | 12.3k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); | 80 | 12.3k | (void)registration; | 81 | 12.3k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastHttp3Traits>::EnsurePostProcessor() Line | Count | Source | 77 | 6.98k | static void EnsurePostProcessor() { | 78 | 6.98k | static const protobuf_mutator::libfuzzer::PostProcessorRegistration<Message> registration( | 79 | 6.98k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); | 80 | 6.98k | (void)registration; | 81 | 6.98k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::CompatibilityTraits>::EnsurePostProcessor() Line | Count | Source | 77 | 12.3k | static void EnsurePostProcessor() { | 78 | 12.3k | static const protobuf_mutator::libfuzzer::PostProcessorRegistration<Message> registration( | 79 | 12.3k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); | 80 | 12.3k | (void)registration; | 81 | 12.3k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::ResolverTraits>::EnsurePostProcessor() Line | Count | Source | 77 | 8.14k | static void EnsurePostProcessor() { | 78 | 8.14k | static const protobuf_mutator::libfuzzer::PostProcessorRegistration<Message> registration( | 79 | 8.14k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); | 80 | 8.14k | (void)registration; | 81 | 8.14k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::ProxyTransportTraits>::EnsurePostProcessor() Line | Count | Source | 77 | 7.99k | static void EnsurePostProcessor() { | 78 | 7.99k | static const protobuf_mutator::libfuzzer::PostProcessorRegistration<Message> registration( | 79 | 7.99k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); | 80 | 7.99k | (void)registration; | 81 | 7.99k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastHttp2Traits>::EnsurePostProcessor() Line | Count | Source | 77 | 15.0k | static void EnsurePostProcessor() { | 78 | 15.0k | static const protobuf_mutator::libfuzzer::PostProcessorRegistration<Message> registration( | 79 | 15.0k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); | 80 | 15.0k | (void)registration; | 81 | 15.0k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastHttpTraits>::EnsurePostProcessor() Line | Count | Source | 77 | 12.2k | static void EnsurePostProcessor() { | 78 | 12.2k | static const protobuf_mutator::libfuzzer::PostProcessorRegistration<Message> registration( | 79 | 12.2k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); | 80 | 12.2k | (void)registration; | 81 | 12.2k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::ApiTraits>::EnsurePostProcessor() Line | Count | Source | 77 | 11.9k | static void EnsurePostProcessor() { | 78 | 11.9k | static const protobuf_mutator::libfuzzer::PostProcessorRegistration<Message> registration( | 79 | 11.9k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); | 80 | 11.9k | (void)registration; | 81 | 11.9k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastLdapTraits>::EnsurePostProcessor() Line | Count | Source | 77 | 5.82k | static void EnsurePostProcessor() { | 78 | 5.82k | static const protobuf_mutator::libfuzzer::PostProcessorRegistration<Message> registration( | 79 | 5.82k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); | 80 | 5.82k | (void)registration; | 81 | 5.82k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastRtspTraits>::EnsurePostProcessor() Line | Count | Source | 77 | 6.38k | static void EnsurePostProcessor() { | 78 | 6.38k | static const protobuf_mutator::libfuzzer::PostProcessorRegistration<Message> registration( | 79 | 6.38k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); | 80 | 6.38k | (void)registration; | 81 | 6.38k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastMqttTraits>::EnsurePostProcessor() Line | Count | Source | 77 | 4.11k | static void EnsurePostProcessor() { | 78 | 4.11k | static const protobuf_mutator::libfuzzer::PostProcessorRegistration<Message> registration( | 79 | 4.11k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); | 80 | 4.11k | (void)registration; | 81 | 4.11k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastSecureWebSocketTraits>::EnsurePostProcessor() Line | Count | Source | 77 | 7.47k | static void EnsurePostProcessor() { | 78 | 7.47k | static const protobuf_mutator::libfuzzer::PostProcessorRegistration<Message> registration( | 79 | 7.47k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); | 80 | 7.47k | (void)registration; | 81 | 7.47k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::H2ProxyTraits>::EnsurePostProcessor() Line | Count | Source | 77 | 10.8k | static void EnsurePostProcessor() { | 78 | 10.8k | static const protobuf_mutator::libfuzzer::PostProcessorRegistration<Message> registration( | 79 | 10.8k | [](Message* message, unsigned int /*seed*/) { NormalizeMessage(message); }); | 80 | 10.8k | (void)registration; | 81 | 10.8k | } |
|
82 | | |
83 | | /// Remove unknown wire data, normalize through the common runtime model, |
84 | | /// and lift back into the same generated profile type. |
85 | | /// @param message Generated profile message to normalize in place. |
86 | 240k | static void NormalizeMessage(Message* message) { |
87 | 240k | if (message == nullptr) { |
88 | 0 | return; |
89 | 0 | } |
90 | | |
91 | 240k | message->DiscardUnknownFields(); |
92 | 240k | RuntimeScenario runtime; |
93 | 240k | Traits::Lower(message, &runtime); |
94 | 240k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { |
95 | 228k | NormalizeScenarioForTarget(&runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); |
96 | 228k | } |
97 | 240k | message->Clear(); |
98 | 240k | Traits::Lift(&runtime, message); |
99 | 240k | } proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastTelnetTraits>::NormalizeMessage(curl::fuzzer::generated::fast_telnet::FastTelnetScenario*) Line | Count | Source | 86 | 4.40k | static void NormalizeMessage(Message* message) { | 87 | 4.40k | if (message == nullptr) { | 88 | 0 | return; | 89 | 0 | } | 90 | | | 91 | 4.40k | message->DiscardUnknownFields(); | 92 | 4.40k | RuntimeScenario runtime; | 93 | 4.40k | Traits::Lower(message, &runtime); | 94 | 4.40k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 95 | 4.40k | NormalizeScenarioForTarget(&runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 96 | 4.40k | } | 97 | 4.40k | message->Clear(); | 98 | 4.40k | Traits::Lift(&runtime, message); | 99 | 4.40k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastFtpTraits>::NormalizeMessage(curl::fuzzer::generated::fast_ftp::FastFtpScenario*) Line | Count | Source | 86 | 6.10k | static void NormalizeMessage(Message* message) { | 87 | 6.10k | if (message == nullptr) { | 88 | 0 | return; | 89 | 0 | } | 90 | | | 91 | 6.10k | message->DiscardUnknownFields(); | 92 | 6.10k | RuntimeScenario runtime; | 93 | 6.10k | Traits::Lower(message, &runtime); | 94 | 6.10k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 95 | 6.10k | NormalizeScenarioForTarget(&runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 96 | 6.10k | } | 97 | 6.10k | message->Clear(); | 98 | 6.10k | Traits::Lift(&runtime, message); | 99 | 6.10k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastSmtpTraits>::NormalizeMessage(curl::fuzzer::generated::fast_smtp::FastSmtpScenario*) Line | Count | Source | 86 | 4.84k | static void NormalizeMessage(Message* message) { | 87 | 4.84k | if (message == nullptr) { | 88 | 0 | return; | 89 | 0 | } | 90 | | | 91 | 4.84k | message->DiscardUnknownFields(); | 92 | 4.84k | RuntimeScenario runtime; | 93 | 4.84k | Traits::Lower(message, &runtime); | 94 | 4.84k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 95 | 4.84k | NormalizeScenarioForTarget(&runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 96 | 4.84k | } | 97 | 4.84k | message->Clear(); | 98 | 4.84k | Traits::Lift(&runtime, message); | 99 | 4.84k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::HttpsH2Traits>::NormalizeMessage(curl::fuzzer::generated::https_h2::HttpsH2Scenario*) Line | Count | Source | 86 | 12.0k | static void NormalizeMessage(Message* message) { | 87 | 12.0k | if (message == nullptr) { | 88 | 0 | return; | 89 | 0 | } | 90 | | | 91 | 12.0k | message->DiscardUnknownFields(); | 92 | 12.0k | RuntimeScenario runtime; | 93 | 12.0k | Traits::Lower(message, &runtime); | 94 | 12.0k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 95 | 12.0k | NormalizeScenarioForTarget(&runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 96 | 12.0k | } | 97 | 12.0k | message->Clear(); | 98 | 12.0k | Traits::Lift(&runtime, message); | 99 | 12.0k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastTftpTraits>::NormalizeMessage(curl::fuzzer::generated::fast_tftp::FastTftpScenario*) Line | Count | Source | 86 | 2.23k | static void NormalizeMessage(Message* message) { | 87 | 2.23k | if (message == nullptr) { | 88 | 0 | return; | 89 | 0 | } | 90 | | | 91 | 2.23k | message->DiscardUnknownFields(); | 92 | 2.23k | RuntimeScenario runtime; | 93 | 2.23k | Traits::Lower(message, &runtime); | 94 | 2.23k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 95 | 2.23k | NormalizeScenarioForTarget(&runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 96 | 2.23k | } | 97 | 2.23k | message->Clear(); | 98 | 2.23k | Traits::Lift(&runtime, message); | 99 | 2.23k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastWebSocketTraits>::NormalizeMessage(curl::fuzzer::generated::fast_websocket::FastWebSocketScenario*) Line | Count | Source | 86 | 9.14k | static void NormalizeMessage(Message* message) { | 87 | 9.14k | if (message == nullptr) { | 88 | 0 | return; | 89 | 0 | } | 90 | | | 91 | 9.14k | message->DiscardUnknownFields(); | 92 | 9.14k | RuntimeScenario runtime; | 93 | 9.14k | Traits::Lower(message, &runtime); | 94 | 9.14k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 95 | 9.14k | NormalizeScenarioForTarget(&runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 96 | 9.14k | } | 97 | 9.14k | message->Clear(); | 98 | 9.14k | Traits::Lift(&runtime, message); | 99 | 9.14k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastDictTraits>::NormalizeMessage(curl::fuzzer::generated::fast_dict::FastDictScenario*) Line | Count | Source | 86 | 3.21k | static void NormalizeMessage(Message* message) { | 87 | 3.21k | if (message == nullptr) { | 88 | 0 | return; | 89 | 0 | } | 90 | | | 91 | 3.21k | message->DiscardUnknownFields(); | 92 | 3.21k | RuntimeScenario runtime; | 93 | 3.21k | Traits::Lower(message, &runtime); | 94 | 3.21k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 95 | 3.21k | NormalizeScenarioForTarget(&runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 96 | 3.21k | } | 97 | 3.21k | message->Clear(); | 98 | 3.21k | Traits::Lift(&runtime, message); | 99 | 3.21k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::DeepHttpTraits>::NormalizeMessage(curl::fuzzer::generated::deep_http::DeepHttpScenario*) Line | Count | Source | 86 | 12.6k | static void NormalizeMessage(Message* message) { | 87 | 12.6k | if (message == nullptr) { | 88 | 0 | return; | 89 | 0 | } | 90 | | | 91 | 12.6k | message->DiscardUnknownFields(); | 92 | 12.6k | RuntimeScenario runtime; | 93 | 12.6k | Traits::Lower(message, &runtime); | 94 | 12.6k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 95 | 12.6k | NormalizeScenarioForTarget(&runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 96 | 12.6k | } | 97 | 12.6k | message->Clear(); | 98 | 12.6k | Traits::Lift(&runtime, message); | 99 | 12.6k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastIpfsTraits>::NormalizeMessage(curl::fuzzer::generated::fast_ipfs::FastIpfsScenario*) Line | Count | Source | 86 | 9.29k | static void NormalizeMessage(Message* message) { | 87 | 9.29k | if (message == nullptr) { | 88 | 0 | return; | 89 | 0 | } | 90 | | | 91 | 9.29k | message->DiscardUnknownFields(); | 92 | 9.29k | RuntimeScenario runtime; | 93 | 9.29k | Traits::Lower(message, &runtime); | 94 | 9.29k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 95 | 9.29k | NormalizeScenarioForTarget(&runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 96 | 9.29k | } | 97 | 9.29k | message->Clear(); | 98 | 9.29k | Traits::Lift(&runtime, message); | 99 | 9.29k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastHttpsTraits>::NormalizeMessage(curl::fuzzer::generated::fast_https::FastHttpsScenario*) Line | Count | Source | 86 | 27.2k | static void NormalizeMessage(Message* message) { | 87 | 27.2k | if (message == nullptr) { | 88 | 0 | return; | 89 | 0 | } | 90 | | | 91 | 27.2k | message->DiscardUnknownFields(); | 92 | 27.2k | RuntimeScenario runtime; | 93 | 27.2k | Traits::Lower(message, &runtime); | 94 | 27.2k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 95 | 27.2k | NormalizeScenarioForTarget(&runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 96 | 27.2k | } | 97 | 27.2k | message->Clear(); | 98 | 27.2k | Traits::Lift(&runtime, message); | 99 | 27.2k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastImapTraits>::NormalizeMessage(curl::fuzzer::generated::fast_imap::FastImapScenario*) Line | Count | Source | 86 | 5.14k | static void NormalizeMessage(Message* message) { | 87 | 5.14k | if (message == nullptr) { | 88 | 0 | return; | 89 | 0 | } | 90 | | | 91 | 5.14k | message->DiscardUnknownFields(); | 92 | 5.14k | RuntimeScenario runtime; | 93 | 5.14k | Traits::Lower(message, &runtime); | 94 | 5.14k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 95 | 5.14k | NormalizeScenarioForTarget(&runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 96 | 5.14k | } | 97 | 5.14k | message->Clear(); | 98 | 5.14k | Traits::Lift(&runtime, message); | 99 | 5.14k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastGopherTraits>::NormalizeMessage(curl::fuzzer::generated::fast_gopher::FastGopherScenario*) Line | Count | Source | 86 | 7.56k | static void NormalizeMessage(Message* message) { | 87 | 7.56k | if (message == nullptr) { | 88 | 0 | return; | 89 | 0 | } | 90 | | | 91 | 7.56k | message->DiscardUnknownFields(); | 92 | 7.56k | RuntimeScenario runtime; | 93 | 7.56k | Traits::Lower(message, &runtime); | 94 | 7.56k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 95 | 7.56k | NormalizeScenarioForTarget(&runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 96 | 7.56k | } | 97 | 7.56k | message->Clear(); | 98 | 7.56k | Traits::Lift(&runtime, message); | 99 | 7.56k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastFileTraits>::NormalizeMessage(curl::fuzzer::generated::fast_file::FastFileScenario*) Line | Count | Source | 86 | 3.57k | static void NormalizeMessage(Message* message) { | 87 | 3.57k | if (message == nullptr) { | 88 | 0 | return; | 89 | 0 | } | 90 | | | 91 | 3.57k | message->DiscardUnknownFields(); | 92 | 3.57k | RuntimeScenario runtime; | 93 | 3.57k | Traits::Lower(message, &runtime); | 94 | 3.57k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 95 | 3.57k | NormalizeScenarioForTarget(&runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 96 | 3.57k | } | 97 | 3.57k | message->Clear(); | 98 | 3.57k | Traits::Lift(&runtime, message); | 99 | 3.57k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::TimingTraits>::NormalizeMessage(curl::fuzzer::generated::timing::TimingScenario*) Line | Count | Source | 86 | 10.0k | static void NormalizeMessage(Message* message) { | 87 | 10.0k | if (message == nullptr) { | 88 | 0 | return; | 89 | 0 | } | 90 | | | 91 | 10.0k | message->DiscardUnknownFields(); | 92 | 10.0k | RuntimeScenario runtime; | 93 | 10.0k | Traits::Lower(message, &runtime); | 94 | 10.0k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 95 | 10.0k | NormalizeScenarioForTarget(&runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 96 | 10.0k | } | 97 | 10.0k | message->Clear(); | 98 | 10.0k | Traits::Lift(&runtime, message); | 99 | 10.0k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastPop3Traits>::NormalizeMessage(curl::fuzzer::generated::fast_pop3::FastPop3Scenario*) Line | Count | Source | 86 | 3.82k | static void NormalizeMessage(Message* message) { | 87 | 3.82k | if (message == nullptr) { | 88 | 0 | return; | 89 | 0 | } | 90 | | | 91 | 3.82k | message->DiscardUnknownFields(); | 92 | 3.82k | RuntimeScenario runtime; | 93 | 3.82k | Traits::Lower(message, &runtime); | 94 | 3.82k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 95 | 3.82k | NormalizeScenarioForTarget(&runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 96 | 3.82k | } | 97 | 3.82k | message->Clear(); | 98 | 3.82k | Traits::Lift(&runtime, message); | 99 | 3.82k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::MultiTraits>::NormalizeMessage(curl::fuzzer::generated::multi::MultiScenario*) Line | Count | Source | 86 | 12.1k | static void NormalizeMessage(Message* message) { | 87 | 12.1k | if (message == nullptr) { | 88 | 0 | return; | 89 | 0 | } | 90 | | | 91 | 12.1k | message->DiscardUnknownFields(); | 92 | 12.1k | RuntimeScenario runtime; | 93 | 12.1k | Traits::Lower(message, &runtime); | 94 | 12.1k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 95 | 12.1k | NormalizeScenarioForTarget(&runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 96 | 12.1k | } | 97 | 12.1k | message->Clear(); | 98 | 12.1k | Traits::Lift(&runtime, message); | 99 | 12.1k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastHttp3Traits>::NormalizeMessage(curl::fuzzer::generated::fast_http3::FastHttp3Scenario*) Line | Count | Source | 86 | 6.67k | static void NormalizeMessage(Message* message) { | 87 | 6.67k | if (message == nullptr) { | 88 | 0 | return; | 89 | 0 | } | 90 | | | 91 | 6.67k | message->DiscardUnknownFields(); | 92 | 6.67k | RuntimeScenario runtime; | 93 | 6.67k | Traits::Lower(message, &runtime); | 94 | 6.67k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 95 | 6.67k | NormalizeScenarioForTarget(&runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 96 | 6.67k | } | 97 | 6.67k | message->Clear(); | 98 | 6.67k | Traits::Lift(&runtime, message); | 99 | 6.67k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::CompatibilityTraits>::NormalizeMessage(curl::fuzzer::generated::compatibility::CompatibilityScenario*) Line | Count | Source | 86 | 12.0k | static void NormalizeMessage(Message* message) { | 87 | 12.0k | if (message == nullptr) { | 88 | 0 | return; | 89 | 0 | } | 90 | | | 91 | 12.0k | message->DiscardUnknownFields(); | 92 | 12.0k | RuntimeScenario runtime; | 93 | 12.0k | Traits::Lower(message, &runtime); | 94 | | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 95 | | NormalizeScenarioForTarget(&runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 96 | | } | 97 | 12.0k | message->Clear(); | 98 | 12.0k | Traits::Lift(&runtime, message); | 99 | 12.0k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::ResolverTraits>::NormalizeMessage(curl::fuzzer::generated::resolver::ResolverScenario*) Line | Count | Source | 86 | 7.85k | static void NormalizeMessage(Message* message) { | 87 | 7.85k | if (message == nullptr) { | 88 | 0 | return; | 89 | 0 | } | 90 | | | 91 | 7.85k | message->DiscardUnknownFields(); | 92 | 7.85k | RuntimeScenario runtime; | 93 | 7.85k | Traits::Lower(message, &runtime); | 94 | 7.85k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 95 | 7.85k | NormalizeScenarioForTarget(&runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 96 | 7.85k | } | 97 | 7.85k | message->Clear(); | 98 | 7.85k | Traits::Lift(&runtime, message); | 99 | 7.85k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::ProxyTransportTraits>::NormalizeMessage(curl::fuzzer::generated::proxy_transport::ProxyTransportScenario*) Line | Count | Source | 86 | 7.95k | static void NormalizeMessage(Message* message) { | 87 | 7.95k | if (message == nullptr) { | 88 | 0 | return; | 89 | 0 | } | 90 | | | 91 | 7.95k | message->DiscardUnknownFields(); | 92 | 7.95k | RuntimeScenario runtime; | 93 | 7.95k | Traits::Lower(message, &runtime); | 94 | 7.95k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 95 | 7.95k | NormalizeScenarioForTarget(&runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 96 | 7.95k | } | 97 | 7.95k | message->Clear(); | 98 | 7.95k | Traits::Lift(&runtime, message); | 99 | 7.95k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastHttp2Traits>::NormalizeMessage(curl::fuzzer::generated::fast_http2::FastHttp2Scenario*) Line | Count | Source | 86 | 14.7k | static void NormalizeMessage(Message* message) { | 87 | 14.7k | if (message == nullptr) { | 88 | 0 | return; | 89 | 0 | } | 90 | | | 91 | 14.7k | message->DiscardUnknownFields(); | 92 | 14.7k | RuntimeScenario runtime; | 93 | 14.7k | Traits::Lower(message, &runtime); | 94 | 14.7k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 95 | 14.7k | NormalizeScenarioForTarget(&runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 96 | 14.7k | } | 97 | 14.7k | message->Clear(); | 98 | 14.7k | Traits::Lift(&runtime, message); | 99 | 14.7k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastHttpTraits>::NormalizeMessage(curl::fuzzer::generated::fast_http::FastHttpScenario*) Line | Count | Source | 86 | 12.2k | static void NormalizeMessage(Message* message) { | 87 | 12.2k | if (message == nullptr) { | 88 | 0 | return; | 89 | 0 | } | 90 | | | 91 | 12.2k | message->DiscardUnknownFields(); | 92 | 12.2k | RuntimeScenario runtime; | 93 | 12.2k | Traits::Lower(message, &runtime); | 94 | 12.2k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 95 | 12.2k | NormalizeScenarioForTarget(&runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 96 | 12.2k | } | 97 | 12.2k | message->Clear(); | 98 | 12.2k | Traits::Lift(&runtime, message); | 99 | 12.2k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::ApiTraits>::NormalizeMessage(curl::fuzzer::generated::api::ApiScenario*) Line | Count | Source | 86 | 11.7k | static void NormalizeMessage(Message* message) { | 87 | 11.7k | if (message == nullptr) { | 88 | 0 | return; | 89 | 0 | } | 90 | | | 91 | 11.7k | message->DiscardUnknownFields(); | 92 | 11.7k | RuntimeScenario runtime; | 93 | 11.7k | Traits::Lower(message, &runtime); | 94 | 11.7k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 95 | 11.7k | NormalizeScenarioForTarget(&runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 96 | 11.7k | } | 97 | 11.7k | message->Clear(); | 98 | 11.7k | Traits::Lift(&runtime, message); | 99 | 11.7k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastLdapTraits>::NormalizeMessage(curl::fuzzer::generated::fast_ldap::FastLdapScenario*) Line | Count | Source | 86 | 5.76k | static void NormalizeMessage(Message* message) { | 87 | 5.76k | if (message == nullptr) { | 88 | 0 | return; | 89 | 0 | } | 90 | | | 91 | 5.76k | message->DiscardUnknownFields(); | 92 | 5.76k | RuntimeScenario runtime; | 93 | 5.76k | Traits::Lower(message, &runtime); | 94 | 5.76k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 95 | 5.76k | NormalizeScenarioForTarget(&runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 96 | 5.76k | } | 97 | 5.76k | message->Clear(); | 98 | 5.76k | Traits::Lift(&runtime, message); | 99 | 5.76k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastRtspTraits>::NormalizeMessage(curl::fuzzer::generated::fast_rtsp::FastRtspScenario*) Line | Count | Source | 86 | 6.30k | static void NormalizeMessage(Message* message) { | 87 | 6.30k | if (message == nullptr) { | 88 | 0 | return; | 89 | 0 | } | 90 | | | 91 | 6.30k | message->DiscardUnknownFields(); | 92 | 6.30k | RuntimeScenario runtime; | 93 | 6.30k | Traits::Lower(message, &runtime); | 94 | 6.30k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 95 | 6.30k | NormalizeScenarioForTarget(&runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 96 | 6.30k | } | 97 | 6.30k | message->Clear(); | 98 | 6.30k | Traits::Lift(&runtime, message); | 99 | 6.30k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastMqttTraits>::NormalizeMessage(curl::fuzzer::generated::fast_mqtt::FastMqttScenario*) Line | Count | Source | 86 | 4.04k | static void NormalizeMessage(Message* message) { | 87 | 4.04k | if (message == nullptr) { | 88 | 0 | return; | 89 | 0 | } | 90 | | | 91 | 4.04k | message->DiscardUnknownFields(); | 92 | 4.04k | RuntimeScenario runtime; | 93 | 4.04k | Traits::Lower(message, &runtime); | 94 | 4.04k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 95 | 4.04k | NormalizeScenarioForTarget(&runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 96 | 4.04k | } | 97 | 4.04k | message->Clear(); | 98 | 4.04k | Traits::Lift(&runtime, message); | 99 | 4.04k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastSecureWebSocketTraits>::NormalizeMessage(curl::fuzzer::generated::fast_secure_websocket::FastSecureWebSocketScenario*) Line | Count | Source | 86 | 7.34k | static void NormalizeMessage(Message* message) { | 87 | 7.34k | if (message == nullptr) { | 88 | 0 | return; | 89 | 0 | } | 90 | | | 91 | 7.34k | message->DiscardUnknownFields(); | 92 | 7.34k | RuntimeScenario runtime; | 93 | 7.34k | Traits::Lower(message, &runtime); | 94 | 7.34k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 95 | 7.34k | NormalizeScenarioForTarget(&runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 96 | 7.34k | } | 97 | 7.34k | message->Clear(); | 98 | 7.34k | Traits::Lift(&runtime, message); | 99 | 7.34k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::H2ProxyTraits>::NormalizeMessage(curl::fuzzer::generated::h2_proxy::H2ProxyScenario*) Line | Count | Source | 86 | 10.7k | static void NormalizeMessage(Message* message) { | 87 | 10.7k | if (message == nullptr) { | 88 | 0 | return; | 89 | 0 | } | 90 | | | 91 | 10.7k | message->DiscardUnknownFields(); | 92 | 10.7k | RuntimeScenario runtime; | 93 | 10.7k | Traits::Lower(message, &runtime); | 94 | 10.7k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 95 | 10.7k | NormalizeScenarioForTarget(&runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 96 | 10.7k | } | 97 | 10.7k | message->Clear(); | 98 | 10.7k | Traits::Lift(&runtime, message); | 99 | 10.7k | } |
|
100 | | |
101 | | /// Mutate a binary profile message and retain its exact type in LPM's cache. |
102 | | /// @param data Serialized profile message buffer to mutate in place. |
103 | | /// @param size Number of input bytes currently stored in `data`. |
104 | | /// @param max_size Capacity of `data` available for the mutated message. |
105 | | /// @param seed Deterministic mutation seed supplied by libFuzzer. |
106 | | /// @return Number of serialized bytes in the mutated message. |
107 | 1 | static std::size_t CustomMutator(std::uint8_t* data, std::size_t size, std::size_t max_size, unsigned int seed) { |
108 | 1 | EnsurePostProcessor(); |
109 | 1 | Message message; |
110 | 1 | return protobuf_mutator::libfuzzer::CustomProtoMutator(true, data, size, max_size, seed, &message); |
111 | 1 | } Unexecuted instantiation: proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastTelnetTraits>::CustomMutator(unsigned char*, unsigned long, unsigned long, unsigned int) Unexecuted instantiation: proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastFtpTraits>::CustomMutator(unsigned char*, unsigned long, unsigned long, unsigned int) Unexecuted instantiation: proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastSmtpTraits>::CustomMutator(unsigned char*, unsigned long, unsigned long, unsigned int) Unexecuted instantiation: proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::HttpsH2Traits>::CustomMutator(unsigned char*, unsigned long, unsigned long, unsigned int) Unexecuted instantiation: proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastTftpTraits>::CustomMutator(unsigned char*, unsigned long, unsigned long, unsigned int) Unexecuted instantiation: proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastWebSocketTraits>::CustomMutator(unsigned char*, unsigned long, unsigned long, unsigned int) Unexecuted instantiation: proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastDictTraits>::CustomMutator(unsigned char*, unsigned long, unsigned long, unsigned int) Unexecuted instantiation: proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::DeepHttpTraits>::CustomMutator(unsigned char*, unsigned long, unsigned long, unsigned int) Unexecuted instantiation: proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastIpfsTraits>::CustomMutator(unsigned char*, unsigned long, unsigned long, unsigned int) Unexecuted instantiation: proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastHttpsTraits>::CustomMutator(unsigned char*, unsigned long, unsigned long, unsigned int) Unexecuted instantiation: proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastImapTraits>::CustomMutator(unsigned char*, unsigned long, unsigned long, unsigned int) Unexecuted instantiation: proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastGopherTraits>::CustomMutator(unsigned char*, unsigned long, unsigned long, unsigned int) Unexecuted instantiation: proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastFileTraits>::CustomMutator(unsigned char*, unsigned long, unsigned long, unsigned int) proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::TimingTraits>::CustomMutator(unsigned char*, unsigned long, unsigned long, unsigned int) Line | Count | Source | 107 | 1 | static std::size_t CustomMutator(std::uint8_t* data, std::size_t size, std::size_t max_size, unsigned int seed) { | 108 | 1 | EnsurePostProcessor(); | 109 | 1 | Message message; | 110 | 1 | return protobuf_mutator::libfuzzer::CustomProtoMutator(true, data, size, max_size, seed, &message); | 111 | 1 | } |
Unexecuted instantiation: proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastPop3Traits>::CustomMutator(unsigned char*, unsigned long, unsigned long, unsigned int) Unexecuted instantiation: proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::MultiTraits>::CustomMutator(unsigned char*, unsigned long, unsigned long, unsigned int) Unexecuted instantiation: proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastHttp3Traits>::CustomMutator(unsigned char*, unsigned long, unsigned long, unsigned int) Unexecuted instantiation: proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::CompatibilityTraits>::CustomMutator(unsigned char*, unsigned long, unsigned long, unsigned int) Unexecuted instantiation: proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::ResolverTraits>::CustomMutator(unsigned char*, unsigned long, unsigned long, unsigned int) Unexecuted instantiation: proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::ProxyTransportTraits>::CustomMutator(unsigned char*, unsigned long, unsigned long, unsigned int) Unexecuted instantiation: proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastHttp2Traits>::CustomMutator(unsigned char*, unsigned long, unsigned long, unsigned int) Unexecuted instantiation: proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastHttpTraits>::CustomMutator(unsigned char*, unsigned long, unsigned long, unsigned int) Unexecuted instantiation: proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::ApiTraits>::CustomMutator(unsigned char*, unsigned long, unsigned long, unsigned int) Unexecuted instantiation: proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastLdapTraits>::CustomMutator(unsigned char*, unsigned long, unsigned long, unsigned int) Unexecuted instantiation: proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastRtspTraits>::CustomMutator(unsigned char*, unsigned long, unsigned long, unsigned int) Unexecuted instantiation: proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastMqttTraits>::CustomMutator(unsigned char*, unsigned long, unsigned long, unsigned int) Unexecuted instantiation: proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastSecureWebSocketTraits>::CustomMutator(unsigned char*, unsigned long, unsigned long, unsigned int) Unexecuted instantiation: proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::H2ProxyTraits>::CustomMutator(unsigned char*, unsigned long, unsigned long, unsigned int) |
112 | | |
113 | | /// Cross two binary profile messages using the same type as mutation/load. |
114 | | /// @param data1 Serialized first parent message. |
115 | | /// @param size1 Number of bytes in `data1`. |
116 | | /// @param data2 Serialized second parent message. |
117 | | /// @param size2 Number of bytes in `data2`. |
118 | | /// @param out Destination buffer for the crossed message. |
119 | | /// @param max_out_size Capacity of `out`. |
120 | | /// @param seed Deterministic crossover seed supplied by libFuzzer. |
121 | | /// @return Number of serialized bytes written to `out`. |
122 | | static std::size_t CustomCrossOver(const std::uint8_t* data1, std::size_t size1, const std::uint8_t* data2, |
123 | | std::size_t size2, std::uint8_t* out, std::size_t max_out_size, |
124 | 1 | unsigned int seed) { |
125 | 1 | EnsurePostProcessor(); |
126 | 1 | Message message1; |
127 | 1 | Message message2; |
128 | 1 | return protobuf_mutator::libfuzzer::CustomProtoCrossOver(true, data1, size1, data2, size2, out, max_out_size, seed, |
129 | 1 | &message1, &message2); |
130 | 1 | } Unexecuted instantiation: proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastTelnetTraits>::CustomCrossOver(unsigned char const*, unsigned long, unsigned char const*, unsigned long, unsigned char*, unsigned long, unsigned int) Unexecuted instantiation: proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastFtpTraits>::CustomCrossOver(unsigned char const*, unsigned long, unsigned char const*, unsigned long, unsigned char*, unsigned long, unsigned int) Unexecuted instantiation: proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastSmtpTraits>::CustomCrossOver(unsigned char const*, unsigned long, unsigned char const*, unsigned long, unsigned char*, unsigned long, unsigned int) Unexecuted instantiation: proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::HttpsH2Traits>::CustomCrossOver(unsigned char const*, unsigned long, unsigned char const*, unsigned long, unsigned char*, unsigned long, unsigned int) Unexecuted instantiation: proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastTftpTraits>::CustomCrossOver(unsigned char const*, unsigned long, unsigned char const*, unsigned long, unsigned char*, unsigned long, unsigned int) Unexecuted instantiation: proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastWebSocketTraits>::CustomCrossOver(unsigned char const*, unsigned long, unsigned char const*, unsigned long, unsigned char*, unsigned long, unsigned int) Unexecuted instantiation: proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastDictTraits>::CustomCrossOver(unsigned char const*, unsigned long, unsigned char const*, unsigned long, unsigned char*, unsigned long, unsigned int) Unexecuted instantiation: proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::DeepHttpTraits>::CustomCrossOver(unsigned char const*, unsigned long, unsigned char const*, unsigned long, unsigned char*, unsigned long, unsigned int) Unexecuted instantiation: proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastIpfsTraits>::CustomCrossOver(unsigned char const*, unsigned long, unsigned char const*, unsigned long, unsigned char*, unsigned long, unsigned int) Unexecuted instantiation: proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastHttpsTraits>::CustomCrossOver(unsigned char const*, unsigned long, unsigned char const*, unsigned long, unsigned char*, unsigned long, unsigned int) Unexecuted instantiation: proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastImapTraits>::CustomCrossOver(unsigned char const*, unsigned long, unsigned char const*, unsigned long, unsigned char*, unsigned long, unsigned int) Unexecuted instantiation: proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastGopherTraits>::CustomCrossOver(unsigned char const*, unsigned long, unsigned char const*, unsigned long, unsigned char*, unsigned long, unsigned int) Unexecuted instantiation: proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastFileTraits>::CustomCrossOver(unsigned char const*, unsigned long, unsigned char const*, unsigned long, unsigned char*, unsigned long, unsigned int) proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::TimingTraits>::CustomCrossOver(unsigned char const*, unsigned long, unsigned char const*, unsigned long, unsigned char*, unsigned long, unsigned int) Line | Count | Source | 124 | 1 | unsigned int seed) { | 125 | 1 | EnsurePostProcessor(); | 126 | 1 | Message message1; | 127 | 1 | Message message2; | 128 | 1 | return protobuf_mutator::libfuzzer::CustomProtoCrossOver(true, data1, size1, data2, size2, out, max_out_size, seed, | 129 | 1 | &message1, &message2); | 130 | 1 | } |
Unexecuted instantiation: proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastPop3Traits>::CustomCrossOver(unsigned char const*, unsigned long, unsigned char const*, unsigned long, unsigned char*, unsigned long, unsigned int) Unexecuted instantiation: proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::MultiTraits>::CustomCrossOver(unsigned char const*, unsigned long, unsigned char const*, unsigned long, unsigned char*, unsigned long, unsigned int) Unexecuted instantiation: proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastHttp3Traits>::CustomCrossOver(unsigned char const*, unsigned long, unsigned char const*, unsigned long, unsigned char*, unsigned long, unsigned int) Unexecuted instantiation: proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::CompatibilityTraits>::CustomCrossOver(unsigned char const*, unsigned long, unsigned char const*, unsigned long, unsigned char*, unsigned long, unsigned int) Unexecuted instantiation: proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::ResolverTraits>::CustomCrossOver(unsigned char const*, unsigned long, unsigned char const*, unsigned long, unsigned char*, unsigned long, unsigned int) Unexecuted instantiation: proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::ProxyTransportTraits>::CustomCrossOver(unsigned char const*, unsigned long, unsigned char const*, unsigned long, unsigned char*, unsigned long, unsigned int) Unexecuted instantiation: proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastHttp2Traits>::CustomCrossOver(unsigned char const*, unsigned long, unsigned char const*, unsigned long, unsigned char*, unsigned long, unsigned int) Unexecuted instantiation: proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastHttpTraits>::CustomCrossOver(unsigned char const*, unsigned long, unsigned char const*, unsigned long, unsigned char*, unsigned long, unsigned int) Unexecuted instantiation: proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::ApiTraits>::CustomCrossOver(unsigned char const*, unsigned long, unsigned char const*, unsigned long, unsigned char*, unsigned long, unsigned int) Unexecuted instantiation: proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastLdapTraits>::CustomCrossOver(unsigned char const*, unsigned long, unsigned char const*, unsigned long, unsigned char*, unsigned long, unsigned int) Unexecuted instantiation: proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastRtspTraits>::CustomCrossOver(unsigned char const*, unsigned long, unsigned char const*, unsigned long, unsigned char*, unsigned long, unsigned int) Unexecuted instantiation: proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastMqttTraits>::CustomCrossOver(unsigned char const*, unsigned long, unsigned char const*, unsigned long, unsigned char*, unsigned long, unsigned int) Unexecuted instantiation: proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastSecureWebSocketTraits>::CustomCrossOver(unsigned char const*, unsigned long, unsigned char const*, unsigned long, unsigned char*, unsigned long, unsigned int) Unexecuted instantiation: proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::H2ProxyTraits>::CustomCrossOver(unsigned char const*, unsigned long, unsigned char const*, unsigned long, unsigned char*, unsigned long, unsigned int) |
131 | | |
132 | | /// Load one binary profile message and transfer it into owned runtime state. |
133 | | /// |
134 | | /// This deliberately uses LPM's ordinary input unchanged. On a cache hit, |
135 | | /// the cached Message is the same concrete type used above; on a parse path, |
136 | | /// LPM invokes the registered postprocessor before this direct lowering. |
137 | | /// @param data Serialized profile message bytes. |
138 | | /// @param size Number of bytes available at `data`. |
139 | | /// @param runtime Destination for the owned, lowered runtime Scenario. |
140 | | /// @return Whether the input loaded and lowered successfully. |
141 | 245k | static bool LoadAndLower(const std::uint8_t* data, std::size_t size, RuntimeScenario* runtime) { |
142 | 245k | if (runtime == nullptr) { |
143 | 0 | return false; |
144 | 0 | } |
145 | | |
146 | 245k | EnsurePostProcessor(); |
147 | 245k | Message message; |
148 | 245k | if (!protobuf_mutator::libfuzzer::LoadProtoInput(true, data, size, &message)) { |
149 | 4.39k | return false; |
150 | 4.39k | } |
151 | | |
152 | | // Mutated inputs have already passed the postprocessor before entering |
153 | | // LPM's cache. Parsed inputs pass it in Fix(). Discarding once more is |
154 | | // harmless and makes the lowering boundary fail closed for either path. |
155 | 240k | message.DiscardUnknownFields(); |
156 | 240k | runtime->Clear(); |
157 | 240k | Traits::Lower(&message, runtime); |
158 | | // A projected profile root intentionally cannot carry policy-owned state |
159 | | // such as a fixed scheme. The postprocessor normalized that state before |
160 | | // Lift, but Lift necessarily omitted it; restore it at the final lowering |
161 | | // boundary instead of assuming the serialized root can round-trip it. |
162 | 240k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { |
163 | 228k | NormalizeScenarioForTarget(runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); |
164 | 228k | } |
165 | 240k | return true; |
166 | 245k | } proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastTelnetTraits>::LoadAndLower(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 141 | 4.47k | static bool LoadAndLower(const std::uint8_t* data, std::size_t size, RuntimeScenario* runtime) { | 142 | 4.47k | if (runtime == nullptr) { | 143 | 0 | return false; | 144 | 0 | } | 145 | | | 146 | 4.47k | EnsurePostProcessor(); | 147 | 4.47k | Message message; | 148 | 4.47k | if (!protobuf_mutator::libfuzzer::LoadProtoInput(true, data, size, &message)) { | 149 | 68 | return false; | 150 | 68 | } | 151 | | | 152 | | // Mutated inputs have already passed the postprocessor before entering | 153 | | // LPM's cache. Parsed inputs pass it in Fix(). Discarding once more is | 154 | | // harmless and makes the lowering boundary fail closed for either path. | 155 | 4.40k | message.DiscardUnknownFields(); | 156 | 4.40k | runtime->Clear(); | 157 | 4.40k | Traits::Lower(&message, runtime); | 158 | | // A projected profile root intentionally cannot carry policy-owned state | 159 | | // such as a fixed scheme. The postprocessor normalized that state before | 160 | | // Lift, but Lift necessarily omitted it; restore it at the final lowering | 161 | | // boundary instead of assuming the serialized root can round-trip it. | 162 | 4.40k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 163 | 4.40k | NormalizeScenarioForTarget(runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 164 | 4.40k | } | 165 | 4.40k | return true; | 166 | 4.47k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastFtpTraits>::LoadAndLower(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 141 | 6.18k | static bool LoadAndLower(const std::uint8_t* data, std::size_t size, RuntimeScenario* runtime) { | 142 | 6.18k | if (runtime == nullptr) { | 143 | 0 | return false; | 144 | 0 | } | 145 | | | 146 | 6.18k | EnsurePostProcessor(); | 147 | 6.18k | Message message; | 148 | 6.18k | if (!protobuf_mutator::libfuzzer::LoadProtoInput(true, data, size, &message)) { | 149 | 86 | return false; | 150 | 86 | } | 151 | | | 152 | | // Mutated inputs have already passed the postprocessor before entering | 153 | | // LPM's cache. Parsed inputs pass it in Fix(). Discarding once more is | 154 | | // harmless and makes the lowering boundary fail closed for either path. | 155 | 6.10k | message.DiscardUnknownFields(); | 156 | 6.10k | runtime->Clear(); | 157 | 6.10k | Traits::Lower(&message, runtime); | 158 | | // A projected profile root intentionally cannot carry policy-owned state | 159 | | // such as a fixed scheme. The postprocessor normalized that state before | 160 | | // Lift, but Lift necessarily omitted it; restore it at the final lowering | 161 | | // boundary instead of assuming the serialized root can round-trip it. | 162 | 6.10k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 163 | 6.10k | NormalizeScenarioForTarget(runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 164 | 6.10k | } | 165 | 6.10k | return true; | 166 | 6.18k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastSmtpTraits>::LoadAndLower(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 141 | 4.98k | static bool LoadAndLower(const std::uint8_t* data, std::size_t size, RuntimeScenario* runtime) { | 142 | 4.98k | if (runtime == nullptr) { | 143 | 0 | return false; | 144 | 0 | } | 145 | | | 146 | 4.98k | EnsurePostProcessor(); | 147 | 4.98k | Message message; | 148 | 4.98k | if (!protobuf_mutator::libfuzzer::LoadProtoInput(true, data, size, &message)) { | 149 | 143 | return false; | 150 | 143 | } | 151 | | | 152 | | // Mutated inputs have already passed the postprocessor before entering | 153 | | // LPM's cache. Parsed inputs pass it in Fix(). Discarding once more is | 154 | | // harmless and makes the lowering boundary fail closed for either path. | 155 | 4.84k | message.DiscardUnknownFields(); | 156 | 4.84k | runtime->Clear(); | 157 | 4.84k | Traits::Lower(&message, runtime); | 158 | | // A projected profile root intentionally cannot carry policy-owned state | 159 | | // such as a fixed scheme. The postprocessor normalized that state before | 160 | | // Lift, but Lift necessarily omitted it; restore it at the final lowering | 161 | | // boundary instead of assuming the serialized root can round-trip it. | 162 | 4.84k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 163 | 4.84k | NormalizeScenarioForTarget(runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 164 | 4.84k | } | 165 | 4.84k | return true; | 166 | 4.98k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::HttpsH2Traits>::LoadAndLower(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 141 | 12.3k | static bool LoadAndLower(const std::uint8_t* data, std::size_t size, RuntimeScenario* runtime) { | 142 | 12.3k | if (runtime == nullptr) { | 143 | 0 | return false; | 144 | 0 | } | 145 | | | 146 | 12.3k | EnsurePostProcessor(); | 147 | 12.3k | Message message; | 148 | 12.3k | if (!protobuf_mutator::libfuzzer::LoadProtoInput(true, data, size, &message)) { | 149 | 351 | return false; | 150 | 351 | } | 151 | | | 152 | | // Mutated inputs have already passed the postprocessor before entering | 153 | | // LPM's cache. Parsed inputs pass it in Fix(). Discarding once more is | 154 | | // harmless and makes the lowering boundary fail closed for either path. | 155 | 12.0k | message.DiscardUnknownFields(); | 156 | 12.0k | runtime->Clear(); | 157 | 12.0k | Traits::Lower(&message, runtime); | 158 | | // A projected profile root intentionally cannot carry policy-owned state | 159 | | // such as a fixed scheme. The postprocessor normalized that state before | 160 | | // Lift, but Lift necessarily omitted it; restore it at the final lowering | 161 | | // boundary instead of assuming the serialized root can round-trip it. | 162 | 12.0k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 163 | 12.0k | NormalizeScenarioForTarget(runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 164 | 12.0k | } | 165 | 12.0k | return true; | 166 | 12.3k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastTftpTraits>::LoadAndLower(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 141 | 2.28k | static bool LoadAndLower(const std::uint8_t* data, std::size_t size, RuntimeScenario* runtime) { | 142 | 2.28k | if (runtime == nullptr) { | 143 | 0 | return false; | 144 | 0 | } | 145 | | | 146 | 2.28k | EnsurePostProcessor(); | 147 | 2.28k | Message message; | 148 | 2.28k | if (!protobuf_mutator::libfuzzer::LoadProtoInput(true, data, size, &message)) { | 149 | 50 | return false; | 150 | 50 | } | 151 | | | 152 | | // Mutated inputs have already passed the postprocessor before entering | 153 | | // LPM's cache. Parsed inputs pass it in Fix(). Discarding once more is | 154 | | // harmless and makes the lowering boundary fail closed for either path. | 155 | 2.23k | message.DiscardUnknownFields(); | 156 | 2.23k | runtime->Clear(); | 157 | 2.23k | Traits::Lower(&message, runtime); | 158 | | // A projected profile root intentionally cannot carry policy-owned state | 159 | | // such as a fixed scheme. The postprocessor normalized that state before | 160 | | // Lift, but Lift necessarily omitted it; restore it at the final lowering | 161 | | // boundary instead of assuming the serialized root can round-trip it. | 162 | 2.23k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 163 | 2.23k | NormalizeScenarioForTarget(runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 164 | 2.23k | } | 165 | 2.23k | return true; | 166 | 2.28k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastWebSocketTraits>::LoadAndLower(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 141 | 9.25k | static bool LoadAndLower(const std::uint8_t* data, std::size_t size, RuntimeScenario* runtime) { | 142 | 9.25k | if (runtime == nullptr) { | 143 | 0 | return false; | 144 | 0 | } | 145 | | | 146 | 9.25k | EnsurePostProcessor(); | 147 | 9.25k | Message message; | 148 | 9.25k | if (!protobuf_mutator::libfuzzer::LoadProtoInput(true, data, size, &message)) { | 149 | 113 | return false; | 150 | 113 | } | 151 | | | 152 | | // Mutated inputs have already passed the postprocessor before entering | 153 | | // LPM's cache. Parsed inputs pass it in Fix(). Discarding once more is | 154 | | // harmless and makes the lowering boundary fail closed for either path. | 155 | 9.14k | message.DiscardUnknownFields(); | 156 | 9.14k | runtime->Clear(); | 157 | 9.14k | Traits::Lower(&message, runtime); | 158 | | // A projected profile root intentionally cannot carry policy-owned state | 159 | | // such as a fixed scheme. The postprocessor normalized that state before | 160 | | // Lift, but Lift necessarily omitted it; restore it at the final lowering | 161 | | // boundary instead of assuming the serialized root can round-trip it. | 162 | 9.14k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 163 | 9.14k | NormalizeScenarioForTarget(runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 164 | 9.14k | } | 165 | 9.14k | return true; | 166 | 9.25k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastDictTraits>::LoadAndLower(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 141 | 3.26k | static bool LoadAndLower(const std::uint8_t* data, std::size_t size, RuntimeScenario* runtime) { | 142 | 3.26k | if (runtime == nullptr) { | 143 | 0 | return false; | 144 | 0 | } | 145 | | | 146 | 3.26k | EnsurePostProcessor(); | 147 | 3.26k | Message message; | 148 | 3.26k | if (!protobuf_mutator::libfuzzer::LoadProtoInput(true, data, size, &message)) { | 149 | 52 | return false; | 150 | 52 | } | 151 | | | 152 | | // Mutated inputs have already passed the postprocessor before entering | 153 | | // LPM's cache. Parsed inputs pass it in Fix(). Discarding once more is | 154 | | // harmless and makes the lowering boundary fail closed for either path. | 155 | 3.21k | message.DiscardUnknownFields(); | 156 | 3.21k | runtime->Clear(); | 157 | 3.21k | Traits::Lower(&message, runtime); | 158 | | // A projected profile root intentionally cannot carry policy-owned state | 159 | | // such as a fixed scheme. The postprocessor normalized that state before | 160 | | // Lift, but Lift necessarily omitted it; restore it at the final lowering | 161 | | // boundary instead of assuming the serialized root can round-trip it. | 162 | 3.21k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 163 | 3.21k | NormalizeScenarioForTarget(runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 164 | 3.21k | } | 165 | 3.21k | return true; | 166 | 3.26k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::DeepHttpTraits>::LoadAndLower(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 141 | 12.8k | static bool LoadAndLower(const std::uint8_t* data, std::size_t size, RuntimeScenario* runtime) { | 142 | 12.8k | if (runtime == nullptr) { | 143 | 0 | return false; | 144 | 0 | } | 145 | | | 146 | 12.8k | EnsurePostProcessor(); | 147 | 12.8k | Message message; | 148 | 12.8k | if (!protobuf_mutator::libfuzzer::LoadProtoInput(true, data, size, &message)) { | 149 | 157 | return false; | 150 | 157 | } | 151 | | | 152 | | // Mutated inputs have already passed the postprocessor before entering | 153 | | // LPM's cache. Parsed inputs pass it in Fix(). Discarding once more is | 154 | | // harmless and makes the lowering boundary fail closed for either path. | 155 | 12.6k | message.DiscardUnknownFields(); | 156 | 12.6k | runtime->Clear(); | 157 | 12.6k | Traits::Lower(&message, runtime); | 158 | | // A projected profile root intentionally cannot carry policy-owned state | 159 | | // such as a fixed scheme. The postprocessor normalized that state before | 160 | | // Lift, but Lift necessarily omitted it; restore it at the final lowering | 161 | | // boundary instead of assuming the serialized root can round-trip it. | 162 | 12.6k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 163 | 12.6k | NormalizeScenarioForTarget(runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 164 | 12.6k | } | 165 | 12.6k | return true; | 166 | 12.8k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastIpfsTraits>::LoadAndLower(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 141 | 9.35k | static bool LoadAndLower(const std::uint8_t* data, std::size_t size, RuntimeScenario* runtime) { | 142 | 9.35k | if (runtime == nullptr) { | 143 | 0 | return false; | 144 | 0 | } | 145 | | | 146 | 9.35k | EnsurePostProcessor(); | 147 | 9.35k | Message message; | 148 | 9.35k | if (!protobuf_mutator::libfuzzer::LoadProtoInput(true, data, size, &message)) { | 149 | 57 | return false; | 150 | 57 | } | 151 | | | 152 | | // Mutated inputs have already passed the postprocessor before entering | 153 | | // LPM's cache. Parsed inputs pass it in Fix(). Discarding once more is | 154 | | // harmless and makes the lowering boundary fail closed for either path. | 155 | 9.29k | message.DiscardUnknownFields(); | 156 | 9.29k | runtime->Clear(); | 157 | 9.29k | Traits::Lower(&message, runtime); | 158 | | // A projected profile root intentionally cannot carry policy-owned state | 159 | | // such as a fixed scheme. The postprocessor normalized that state before | 160 | | // Lift, but Lift necessarily omitted it; restore it at the final lowering | 161 | | // boundary instead of assuming the serialized root can round-trip it. | 162 | 9.29k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 163 | 9.29k | NormalizeScenarioForTarget(runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 164 | 9.29k | } | 165 | 9.29k | return true; | 166 | 9.35k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastHttpsTraits>::LoadAndLower(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 141 | 27.7k | static bool LoadAndLower(const std::uint8_t* data, std::size_t size, RuntimeScenario* runtime) { | 142 | 27.7k | if (runtime == nullptr) { | 143 | 0 | return false; | 144 | 0 | } | 145 | | | 146 | 27.7k | EnsurePostProcessor(); | 147 | 27.7k | Message message; | 148 | 27.7k | if (!protobuf_mutator::libfuzzer::LoadProtoInput(true, data, size, &message)) { | 149 | 529 | return false; | 150 | 529 | } | 151 | | | 152 | | // Mutated inputs have already passed the postprocessor before entering | 153 | | // LPM's cache. Parsed inputs pass it in Fix(). Discarding once more is | 154 | | // harmless and makes the lowering boundary fail closed for either path. | 155 | 27.2k | message.DiscardUnknownFields(); | 156 | 27.2k | runtime->Clear(); | 157 | 27.2k | Traits::Lower(&message, runtime); | 158 | | // A projected profile root intentionally cannot carry policy-owned state | 159 | | // such as a fixed scheme. The postprocessor normalized that state before | 160 | | // Lift, but Lift necessarily omitted it; restore it at the final lowering | 161 | | // boundary instead of assuming the serialized root can round-trip it. | 162 | 27.2k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 163 | 27.2k | NormalizeScenarioForTarget(runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 164 | 27.2k | } | 165 | 27.2k | return true; | 166 | 27.7k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastImapTraits>::LoadAndLower(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 141 | 5.28k | static bool LoadAndLower(const std::uint8_t* data, std::size_t size, RuntimeScenario* runtime) { | 142 | 5.28k | if (runtime == nullptr) { | 143 | 0 | return false; | 144 | 0 | } | 145 | | | 146 | 5.28k | EnsurePostProcessor(); | 147 | 5.28k | Message message; | 148 | 5.28k | if (!protobuf_mutator::libfuzzer::LoadProtoInput(true, data, size, &message)) { | 149 | 139 | return false; | 150 | 139 | } | 151 | | | 152 | | // Mutated inputs have already passed the postprocessor before entering | 153 | | // LPM's cache. Parsed inputs pass it in Fix(). Discarding once more is | 154 | | // harmless and makes the lowering boundary fail closed for either path. | 155 | 5.14k | message.DiscardUnknownFields(); | 156 | 5.14k | runtime->Clear(); | 157 | 5.14k | Traits::Lower(&message, runtime); | 158 | | // A projected profile root intentionally cannot carry policy-owned state | 159 | | // such as a fixed scheme. The postprocessor normalized that state before | 160 | | // Lift, but Lift necessarily omitted it; restore it at the final lowering | 161 | | // boundary instead of assuming the serialized root can round-trip it. | 162 | 5.14k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 163 | 5.14k | NormalizeScenarioForTarget(runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 164 | 5.14k | } | 165 | 5.14k | return true; | 166 | 5.28k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastGopherTraits>::LoadAndLower(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 141 | 7.65k | static bool LoadAndLower(const std::uint8_t* data, std::size_t size, RuntimeScenario* runtime) { | 142 | 7.65k | if (runtime == nullptr) { | 143 | 0 | return false; | 144 | 0 | } | 145 | | | 146 | 7.65k | EnsurePostProcessor(); | 147 | 7.65k | Message message; | 148 | 7.65k | if (!protobuf_mutator::libfuzzer::LoadProtoInput(true, data, size, &message)) { | 149 | 92 | return false; | 150 | 92 | } | 151 | | | 152 | | // Mutated inputs have already passed the postprocessor before entering | 153 | | // LPM's cache. Parsed inputs pass it in Fix(). Discarding once more is | 154 | | // harmless and makes the lowering boundary fail closed for either path. | 155 | 7.56k | message.DiscardUnknownFields(); | 156 | 7.56k | runtime->Clear(); | 157 | 7.56k | Traits::Lower(&message, runtime); | 158 | | // A projected profile root intentionally cannot carry policy-owned state | 159 | | // such as a fixed scheme. The postprocessor normalized that state before | 160 | | // Lift, but Lift necessarily omitted it; restore it at the final lowering | 161 | | // boundary instead of assuming the serialized root can round-trip it. | 162 | 7.56k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 163 | 7.56k | NormalizeScenarioForTarget(runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 164 | 7.56k | } | 165 | 7.56k | return true; | 166 | 7.65k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastFileTraits>::LoadAndLower(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 141 | 3.61k | static bool LoadAndLower(const std::uint8_t* data, std::size_t size, RuntimeScenario* runtime) { | 142 | 3.61k | if (runtime == nullptr) { | 143 | 0 | return false; | 144 | 0 | } | 145 | | | 146 | 3.61k | EnsurePostProcessor(); | 147 | 3.61k | Message message; | 148 | 3.61k | if (!protobuf_mutator::libfuzzer::LoadProtoInput(true, data, size, &message)) { | 149 | 34 | return false; | 150 | 34 | } | 151 | | | 152 | | // Mutated inputs have already passed the postprocessor before entering | 153 | | // LPM's cache. Parsed inputs pass it in Fix(). Discarding once more is | 154 | | // harmless and makes the lowering boundary fail closed for either path. | 155 | 3.57k | message.DiscardUnknownFields(); | 156 | 3.57k | runtime->Clear(); | 157 | 3.57k | Traits::Lower(&message, runtime); | 158 | | // A projected profile root intentionally cannot carry policy-owned state | 159 | | // such as a fixed scheme. The postprocessor normalized that state before | 160 | | // Lift, but Lift necessarily omitted it; restore it at the final lowering | 161 | | // boundary instead of assuming the serialized root can round-trip it. | 162 | 3.57k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 163 | 3.57k | NormalizeScenarioForTarget(runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 164 | 3.57k | } | 165 | 3.57k | return true; | 166 | 3.61k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::TimingTraits>::LoadAndLower(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 141 | 10.2k | static bool LoadAndLower(const std::uint8_t* data, std::size_t size, RuntimeScenario* runtime) { | 142 | 10.2k | if (runtime == nullptr) { | 143 | 0 | return false; | 144 | 0 | } | 145 | | | 146 | 10.2k | EnsurePostProcessor(); | 147 | 10.2k | Message message; | 148 | 10.2k | if (!protobuf_mutator::libfuzzer::LoadProtoInput(true, data, size, &message)) { | 149 | 203 | return false; | 150 | 203 | } | 151 | | | 152 | | // Mutated inputs have already passed the postprocessor before entering | 153 | | // LPM's cache. Parsed inputs pass it in Fix(). Discarding once more is | 154 | | // harmless and makes the lowering boundary fail closed for either path. | 155 | 10.0k | message.DiscardUnknownFields(); | 156 | 10.0k | runtime->Clear(); | 157 | 10.0k | Traits::Lower(&message, runtime); | 158 | | // A projected profile root intentionally cannot carry policy-owned state | 159 | | // such as a fixed scheme. The postprocessor normalized that state before | 160 | | // Lift, but Lift necessarily omitted it; restore it at the final lowering | 161 | | // boundary instead of assuming the serialized root can round-trip it. | 162 | 10.0k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 163 | 10.0k | NormalizeScenarioForTarget(runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 164 | 10.0k | } | 165 | 10.0k | return true; | 166 | 10.2k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastPop3Traits>::LoadAndLower(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 141 | 3.88k | static bool LoadAndLower(const std::uint8_t* data, std::size_t size, RuntimeScenario* runtime) { | 142 | 3.88k | if (runtime == nullptr) { | 143 | 0 | return false; | 144 | 0 | } | 145 | | | 146 | 3.88k | EnsurePostProcessor(); | 147 | 3.88k | Message message; | 148 | 3.88k | if (!protobuf_mutator::libfuzzer::LoadProtoInput(true, data, size, &message)) { | 149 | 62 | return false; | 150 | 62 | } | 151 | | | 152 | | // Mutated inputs have already passed the postprocessor before entering | 153 | | // LPM's cache. Parsed inputs pass it in Fix(). Discarding once more is | 154 | | // harmless and makes the lowering boundary fail closed for either path. | 155 | 3.82k | message.DiscardUnknownFields(); | 156 | 3.82k | runtime->Clear(); | 157 | 3.82k | Traits::Lower(&message, runtime); | 158 | | // A projected profile root intentionally cannot carry policy-owned state | 159 | | // such as a fixed scheme. The postprocessor normalized that state before | 160 | | // Lift, but Lift necessarily omitted it; restore it at the final lowering | 161 | | // boundary instead of assuming the serialized root can round-trip it. | 162 | 3.82k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 163 | 3.82k | NormalizeScenarioForTarget(runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 164 | 3.82k | } | 165 | 3.82k | return true; | 166 | 3.88k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::MultiTraits>::LoadAndLower(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 141 | 12.3k | static bool LoadAndLower(const std::uint8_t* data, std::size_t size, RuntimeScenario* runtime) { | 142 | 12.3k | if (runtime == nullptr) { | 143 | 0 | return false; | 144 | 0 | } | 145 | | | 146 | 12.3k | EnsurePostProcessor(); | 147 | 12.3k | Message message; | 148 | 12.3k | if (!protobuf_mutator::libfuzzer::LoadProtoInput(true, data, size, &message)) { | 149 | 195 | return false; | 150 | 195 | } | 151 | | | 152 | | // Mutated inputs have already passed the postprocessor before entering | 153 | | // LPM's cache. Parsed inputs pass it in Fix(). Discarding once more is | 154 | | // harmless and makes the lowering boundary fail closed for either path. | 155 | 12.1k | message.DiscardUnknownFields(); | 156 | 12.1k | runtime->Clear(); | 157 | 12.1k | Traits::Lower(&message, runtime); | 158 | | // A projected profile root intentionally cannot carry policy-owned state | 159 | | // such as a fixed scheme. The postprocessor normalized that state before | 160 | | // Lift, but Lift necessarily omitted it; restore it at the final lowering | 161 | | // boundary instead of assuming the serialized root can round-trip it. | 162 | 12.1k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 163 | 12.1k | NormalizeScenarioForTarget(runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 164 | 12.1k | } | 165 | 12.1k | return true; | 166 | 12.3k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastHttp3Traits>::LoadAndLower(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 141 | 6.98k | static bool LoadAndLower(const std::uint8_t* data, std::size_t size, RuntimeScenario* runtime) { | 142 | 6.98k | if (runtime == nullptr) { | 143 | 0 | return false; | 144 | 0 | } | 145 | | | 146 | 6.98k | EnsurePostProcessor(); | 147 | 6.98k | Message message; | 148 | 6.98k | if (!protobuf_mutator::libfuzzer::LoadProtoInput(true, data, size, &message)) { | 149 | 303 | return false; | 150 | 303 | } | 151 | | | 152 | | // Mutated inputs have already passed the postprocessor before entering | 153 | | // LPM's cache. Parsed inputs pass it in Fix(). Discarding once more is | 154 | | // harmless and makes the lowering boundary fail closed for either path. | 155 | 6.67k | message.DiscardUnknownFields(); | 156 | 6.67k | runtime->Clear(); | 157 | 6.67k | Traits::Lower(&message, runtime); | 158 | | // A projected profile root intentionally cannot carry policy-owned state | 159 | | // such as a fixed scheme. The postprocessor normalized that state before | 160 | | // Lift, but Lift necessarily omitted it; restore it at the final lowering | 161 | | // boundary instead of assuming the serialized root can round-trip it. | 162 | 6.67k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 163 | 6.67k | NormalizeScenarioForTarget(runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 164 | 6.67k | } | 165 | 6.67k | return true; | 166 | 6.98k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::CompatibilityTraits>::LoadAndLower(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 141 | 12.3k | static bool LoadAndLower(const std::uint8_t* data, std::size_t size, RuntimeScenario* runtime) { | 142 | 12.3k | if (runtime == nullptr) { | 143 | 0 | return false; | 144 | 0 | } | 145 | | | 146 | 12.3k | EnsurePostProcessor(); | 147 | 12.3k | Message message; | 148 | 12.3k | if (!protobuf_mutator::libfuzzer::LoadProtoInput(true, data, size, &message)) { | 149 | 369 | return false; | 150 | 369 | } | 151 | | | 152 | | // Mutated inputs have already passed the postprocessor before entering | 153 | | // LPM's cache. Parsed inputs pass it in Fix(). Discarding once more is | 154 | | // harmless and makes the lowering boundary fail closed for either path. | 155 | 12.0k | message.DiscardUnknownFields(); | 156 | 12.0k | runtime->Clear(); | 157 | 12.0k | Traits::Lower(&message, runtime); | 158 | | // A projected profile root intentionally cannot carry policy-owned state | 159 | | // such as a fixed scheme. The postprocessor normalized that state before | 160 | | // Lift, but Lift necessarily omitted it; restore it at the final lowering | 161 | | // boundary instead of assuming the serialized root can round-trip it. | 162 | | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 163 | | NormalizeScenarioForTarget(runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 164 | | } | 165 | 12.0k | return true; | 166 | 12.3k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::ResolverTraits>::LoadAndLower(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 141 | 8.14k | static bool LoadAndLower(const std::uint8_t* data, std::size_t size, RuntimeScenario* runtime) { | 142 | 8.14k | if (runtime == nullptr) { | 143 | 0 | return false; | 144 | 0 | } | 145 | | | 146 | 8.14k | EnsurePostProcessor(); | 147 | 8.14k | Message message; | 148 | 8.14k | if (!protobuf_mutator::libfuzzer::LoadProtoInput(true, data, size, &message)) { | 149 | 285 | return false; | 150 | 285 | } | 151 | | | 152 | | // Mutated inputs have already passed the postprocessor before entering | 153 | | // LPM's cache. Parsed inputs pass it in Fix(). Discarding once more is | 154 | | // harmless and makes the lowering boundary fail closed for either path. | 155 | 7.85k | message.DiscardUnknownFields(); | 156 | 7.85k | runtime->Clear(); | 157 | 7.85k | Traits::Lower(&message, runtime); | 158 | | // A projected profile root intentionally cannot carry policy-owned state | 159 | | // such as a fixed scheme. The postprocessor normalized that state before | 160 | | // Lift, but Lift necessarily omitted it; restore it at the final lowering | 161 | | // boundary instead of assuming the serialized root can round-trip it. | 162 | 7.85k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 163 | 7.85k | NormalizeScenarioForTarget(runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 164 | 7.85k | } | 165 | 7.85k | return true; | 166 | 8.14k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::ProxyTransportTraits>::LoadAndLower(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 141 | 7.99k | static bool LoadAndLower(const std::uint8_t* data, std::size_t size, RuntimeScenario* runtime) { | 142 | 7.99k | if (runtime == nullptr) { | 143 | 0 | return false; | 144 | 0 | } | 145 | | | 146 | 7.99k | EnsurePostProcessor(); | 147 | 7.99k | Message message; | 148 | 7.99k | if (!protobuf_mutator::libfuzzer::LoadProtoInput(true, data, size, &message)) { | 149 | 44 | return false; | 150 | 44 | } | 151 | | | 152 | | // Mutated inputs have already passed the postprocessor before entering | 153 | | // LPM's cache. Parsed inputs pass it in Fix(). Discarding once more is | 154 | | // harmless and makes the lowering boundary fail closed for either path. | 155 | 7.95k | message.DiscardUnknownFields(); | 156 | 7.95k | runtime->Clear(); | 157 | 7.95k | Traits::Lower(&message, runtime); | 158 | | // A projected profile root intentionally cannot carry policy-owned state | 159 | | // such as a fixed scheme. The postprocessor normalized that state before | 160 | | // Lift, but Lift necessarily omitted it; restore it at the final lowering | 161 | | // boundary instead of assuming the serialized root can round-trip it. | 162 | 7.95k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 163 | 7.95k | NormalizeScenarioForTarget(runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 164 | 7.95k | } | 165 | 7.95k | return true; | 166 | 7.99k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastHttp2Traits>::LoadAndLower(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 141 | 15.0k | static bool LoadAndLower(const std::uint8_t* data, std::size_t size, RuntimeScenario* runtime) { | 142 | 15.0k | if (runtime == nullptr) { | 143 | 0 | return false; | 144 | 0 | } | 145 | | | 146 | 15.0k | EnsurePostProcessor(); | 147 | 15.0k | Message message; | 148 | 15.0k | if (!protobuf_mutator::libfuzzer::LoadProtoInput(true, data, size, &message)) { | 149 | 368 | return false; | 150 | 368 | } | 151 | | | 152 | | // Mutated inputs have already passed the postprocessor before entering | 153 | | // LPM's cache. Parsed inputs pass it in Fix(). Discarding once more is | 154 | | // harmless and makes the lowering boundary fail closed for either path. | 155 | 14.7k | message.DiscardUnknownFields(); | 156 | 14.7k | runtime->Clear(); | 157 | 14.7k | Traits::Lower(&message, runtime); | 158 | | // A projected profile root intentionally cannot carry policy-owned state | 159 | | // such as a fixed scheme. The postprocessor normalized that state before | 160 | | // Lift, but Lift necessarily omitted it; restore it at the final lowering | 161 | | // boundary instead of assuming the serialized root can round-trip it. | 162 | 14.7k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 163 | 14.7k | NormalizeScenarioForTarget(runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 164 | 14.7k | } | 165 | 14.7k | return true; | 166 | 15.0k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastHttpTraits>::LoadAndLower(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 141 | 12.2k | static bool LoadAndLower(const std::uint8_t* data, std::size_t size, RuntimeScenario* runtime) { | 142 | 12.2k | if (runtime == nullptr) { | 143 | 0 | return false; | 144 | 0 | } | 145 | | | 146 | 12.2k | EnsurePostProcessor(); | 147 | 12.2k | Message message; | 148 | 12.2k | if (!protobuf_mutator::libfuzzer::LoadProtoInput(true, data, size, &message)) { | 149 | 52 | return false; | 150 | 52 | } | 151 | | | 152 | | // Mutated inputs have already passed the postprocessor before entering | 153 | | // LPM's cache. Parsed inputs pass it in Fix(). Discarding once more is | 154 | | // harmless and makes the lowering boundary fail closed for either path. | 155 | 12.2k | message.DiscardUnknownFields(); | 156 | 12.2k | runtime->Clear(); | 157 | 12.2k | Traits::Lower(&message, runtime); | 158 | | // A projected profile root intentionally cannot carry policy-owned state | 159 | | // such as a fixed scheme. The postprocessor normalized that state before | 160 | | // Lift, but Lift necessarily omitted it; restore it at the final lowering | 161 | | // boundary instead of assuming the serialized root can round-trip it. | 162 | 12.2k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 163 | 12.2k | NormalizeScenarioForTarget(runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 164 | 12.2k | } | 165 | 12.2k | return true; | 166 | 12.2k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::ApiTraits>::LoadAndLower(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 141 | 11.9k | static bool LoadAndLower(const std::uint8_t* data, std::size_t size, RuntimeScenario* runtime) { | 142 | 11.9k | if (runtime == nullptr) { | 143 | 0 | return false; | 144 | 0 | } | 145 | | | 146 | 11.9k | EnsurePostProcessor(); | 147 | 11.9k | Message message; | 148 | 11.9k | if (!protobuf_mutator::libfuzzer::LoadProtoInput(true, data, size, &message)) { | 149 | 185 | return false; | 150 | 185 | } | 151 | | | 152 | | // Mutated inputs have already passed the postprocessor before entering | 153 | | // LPM's cache. Parsed inputs pass it in Fix(). Discarding once more is | 154 | | // harmless and makes the lowering boundary fail closed for either path. | 155 | 11.7k | message.DiscardUnknownFields(); | 156 | 11.7k | runtime->Clear(); | 157 | 11.7k | Traits::Lower(&message, runtime); | 158 | | // A projected profile root intentionally cannot carry policy-owned state | 159 | | // such as a fixed scheme. The postprocessor normalized that state before | 160 | | // Lift, but Lift necessarily omitted it; restore it at the final lowering | 161 | | // boundary instead of assuming the serialized root can round-trip it. | 162 | 11.7k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 163 | 11.7k | NormalizeScenarioForTarget(runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 164 | 11.7k | } | 165 | 11.7k | return true; | 166 | 11.9k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastLdapTraits>::LoadAndLower(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 141 | 5.82k | static bool LoadAndLower(const std::uint8_t* data, std::size_t size, RuntimeScenario* runtime) { | 142 | 5.82k | if (runtime == nullptr) { | 143 | 0 | return false; | 144 | 0 | } | 145 | | | 146 | 5.82k | EnsurePostProcessor(); | 147 | 5.82k | Message message; | 148 | 5.82k | if (!protobuf_mutator::libfuzzer::LoadProtoInput(true, data, size, &message)) { | 149 | 56 | return false; | 150 | 56 | } | 151 | | | 152 | | // Mutated inputs have already passed the postprocessor before entering | 153 | | // LPM's cache. Parsed inputs pass it in Fix(). Discarding once more is | 154 | | // harmless and makes the lowering boundary fail closed for either path. | 155 | 5.76k | message.DiscardUnknownFields(); | 156 | 5.76k | runtime->Clear(); | 157 | 5.76k | Traits::Lower(&message, runtime); | 158 | | // A projected profile root intentionally cannot carry policy-owned state | 159 | | // such as a fixed scheme. The postprocessor normalized that state before | 160 | | // Lift, but Lift necessarily omitted it; restore it at the final lowering | 161 | | // boundary instead of assuming the serialized root can round-trip it. | 162 | 5.76k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 163 | 5.76k | NormalizeScenarioForTarget(runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 164 | 5.76k | } | 165 | 5.76k | return true; | 166 | 5.82k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastRtspTraits>::LoadAndLower(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 141 | 6.38k | static bool LoadAndLower(const std::uint8_t* data, std::size_t size, RuntimeScenario* runtime) { | 142 | 6.38k | if (runtime == nullptr) { | 143 | 0 | return false; | 144 | 0 | } | 145 | | | 146 | 6.38k | EnsurePostProcessor(); | 147 | 6.38k | Message message; | 148 | 6.38k | if (!protobuf_mutator::libfuzzer::LoadProtoInput(true, data, size, &message)) { | 149 | 76 | return false; | 150 | 76 | } | 151 | | | 152 | | // Mutated inputs have already passed the postprocessor before entering | 153 | | // LPM's cache. Parsed inputs pass it in Fix(). Discarding once more is | 154 | | // harmless and makes the lowering boundary fail closed for either path. | 155 | 6.30k | message.DiscardUnknownFields(); | 156 | 6.30k | runtime->Clear(); | 157 | 6.30k | Traits::Lower(&message, runtime); | 158 | | // A projected profile root intentionally cannot carry policy-owned state | 159 | | // such as a fixed scheme. The postprocessor normalized that state before | 160 | | // Lift, but Lift necessarily omitted it; restore it at the final lowering | 161 | | // boundary instead of assuming the serialized root can round-trip it. | 162 | 6.30k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 163 | 6.30k | NormalizeScenarioForTarget(runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 164 | 6.30k | } | 165 | 6.30k | return true; | 166 | 6.38k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastMqttTraits>::LoadAndLower(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 141 | 4.11k | static bool LoadAndLower(const std::uint8_t* data, std::size_t size, RuntimeScenario* runtime) { | 142 | 4.11k | if (runtime == nullptr) { | 143 | 0 | return false; | 144 | 0 | } | 145 | | | 146 | 4.11k | EnsurePostProcessor(); | 147 | 4.11k | Message message; | 148 | 4.11k | if (!protobuf_mutator::libfuzzer::LoadProtoInput(true, data, size, &message)) { | 149 | 65 | return false; | 150 | 65 | } | 151 | | | 152 | | // Mutated inputs have already passed the postprocessor before entering | 153 | | // LPM's cache. Parsed inputs pass it in Fix(). Discarding once more is | 154 | | // harmless and makes the lowering boundary fail closed for either path. | 155 | 4.04k | message.DiscardUnknownFields(); | 156 | 4.04k | runtime->Clear(); | 157 | 4.04k | Traits::Lower(&message, runtime); | 158 | | // A projected profile root intentionally cannot carry policy-owned state | 159 | | // such as a fixed scheme. The postprocessor normalized that state before | 160 | | // Lift, but Lift necessarily omitted it; restore it at the final lowering | 161 | | // boundary instead of assuming the serialized root can round-trip it. | 162 | 4.04k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 163 | 4.04k | NormalizeScenarioForTarget(runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 164 | 4.04k | } | 165 | 4.04k | return true; | 166 | 4.11k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::FastSecureWebSocketTraits>::LoadAndLower(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 141 | 7.47k | static bool LoadAndLower(const std::uint8_t* data, std::size_t size, RuntimeScenario* runtime) { | 142 | 7.47k | if (runtime == nullptr) { | 143 | 0 | return false; | 144 | 0 | } | 145 | | | 146 | 7.47k | EnsurePostProcessor(); | 147 | 7.47k | Message message; | 148 | 7.47k | if (!protobuf_mutator::libfuzzer::LoadProtoInput(true, data, size, &message)) { | 149 | 122 | return false; | 150 | 122 | } | 151 | | | 152 | | // Mutated inputs have already passed the postprocessor before entering | 153 | | // LPM's cache. Parsed inputs pass it in Fix(). Discarding once more is | 154 | | // harmless and makes the lowering boundary fail closed for either path. | 155 | 7.34k | message.DiscardUnknownFields(); | 156 | 7.34k | runtime->Clear(); | 157 | 7.34k | Traits::Lower(&message, runtime); | 158 | | // A projected profile root intentionally cannot carry policy-owned state | 159 | | // such as a fixed scheme. The postprocessor normalized that state before | 160 | | // Lift, but Lift necessarily omitted it; restore it at the final lowering | 161 | | // boundary instead of assuming the serialized root can round-trip it. | 162 | 7.34k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 163 | 7.34k | NormalizeScenarioForTarget(runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 164 | 7.34k | } | 165 | 7.34k | return true; | 166 | 7.47k | } |
proto_fuzzer::ProfileFuzzerHooks<proto_fuzzer::generated::H2ProxyTraits>::LoadAndLower(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 141 | 10.8k | static bool LoadAndLower(const std::uint8_t* data, std::size_t size, RuntimeScenario* runtime) { | 142 | 10.8k | if (runtime == nullptr) { | 143 | 0 | return false; | 144 | 0 | } | 145 | | | 146 | 10.8k | EnsurePostProcessor(); | 147 | 10.8k | Message message; | 148 | 10.8k | if (!protobuf_mutator::libfuzzer::LoadProtoInput(true, data, size, &message)) { | 149 | 140 | return false; | 150 | 140 | } | 151 | | | 152 | | // Mutated inputs have already passed the postprocessor before entering | 153 | | // LPM's cache. Parsed inputs pass it in Fix(). Discarding once more is | 154 | | // harmless and makes the lowering boundary fail closed for either path. | 155 | 10.7k | message.DiscardUnknownFields(); | 156 | 10.7k | runtime->Clear(); | 157 | 10.7k | Traits::Lower(&message, runtime); | 158 | | // A projected profile root intentionally cannot carry policy-owned state | 159 | | // such as a fixed scheme. The postprocessor normalized that state before | 160 | | // Lift, but Lift necessarily omitted it; restore it at the final lowering | 161 | | // boundary instead of assuming the serialized root can round-trip it. | 162 | 10.7k | if constexpr (Traits::kProfile != TargetProfile::kCompatibility) { | 163 | 10.7k | NormalizeScenarioForTarget(runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); | 164 | 10.7k | } | 165 | 10.7k | return true; | 166 | 10.8k | } |
|
167 | | }; |
168 | | |
169 | | /// Load one generated profile message and lower it into runtime state. |
170 | | /// @tparam Traits Generated adapter defining the concrete message type. |
171 | | /// @param data Serialized generated-profile bytes. |
172 | | /// @param size Number of bytes available at `data`. |
173 | | /// @param runtime Destination for the owned runtime Scenario. |
174 | | /// @return Whether parsing and lowering succeeded. |
175 | | template <typename Traits> |
176 | 245k | bool LoadProfileInput(const std::uint8_t* data, std::size_t size, curl::fuzzer::proto::Scenario* runtime) { |
177 | 245k | return ProfileFuzzerHooks<Traits>::LoadAndLower(data, size, runtime); |
178 | 245k | } bool proto_fuzzer::LoadProfileInput<proto_fuzzer::generated::FastTelnetTraits>(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 176 | 4.47k | bool LoadProfileInput(const std::uint8_t* data, std::size_t size, curl::fuzzer::proto::Scenario* runtime) { | 177 | 4.47k | return ProfileFuzzerHooks<Traits>::LoadAndLower(data, size, runtime); | 178 | 4.47k | } |
bool proto_fuzzer::LoadProfileInput<proto_fuzzer::generated::FastFtpTraits>(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 176 | 6.18k | bool LoadProfileInput(const std::uint8_t* data, std::size_t size, curl::fuzzer::proto::Scenario* runtime) { | 177 | 6.18k | return ProfileFuzzerHooks<Traits>::LoadAndLower(data, size, runtime); | 178 | 6.18k | } |
bool proto_fuzzer::LoadProfileInput<proto_fuzzer::generated::FastSmtpTraits>(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 176 | 4.98k | bool LoadProfileInput(const std::uint8_t* data, std::size_t size, curl::fuzzer::proto::Scenario* runtime) { | 177 | 4.98k | return ProfileFuzzerHooks<Traits>::LoadAndLower(data, size, runtime); | 178 | 4.98k | } |
bool proto_fuzzer::LoadProfileInput<proto_fuzzer::generated::HttpsH2Traits>(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 176 | 12.3k | bool LoadProfileInput(const std::uint8_t* data, std::size_t size, curl::fuzzer::proto::Scenario* runtime) { | 177 | 12.3k | return ProfileFuzzerHooks<Traits>::LoadAndLower(data, size, runtime); | 178 | 12.3k | } |
bool proto_fuzzer::LoadProfileInput<proto_fuzzer::generated::FastTftpTraits>(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 176 | 2.28k | bool LoadProfileInput(const std::uint8_t* data, std::size_t size, curl::fuzzer::proto::Scenario* runtime) { | 177 | 2.28k | return ProfileFuzzerHooks<Traits>::LoadAndLower(data, size, runtime); | 178 | 2.28k | } |
bool proto_fuzzer::LoadProfileInput<proto_fuzzer::generated::FastWebSocketTraits>(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 176 | 9.25k | bool LoadProfileInput(const std::uint8_t* data, std::size_t size, curl::fuzzer::proto::Scenario* runtime) { | 177 | 9.25k | return ProfileFuzzerHooks<Traits>::LoadAndLower(data, size, runtime); | 178 | 9.25k | } |
bool proto_fuzzer::LoadProfileInput<proto_fuzzer::generated::FastDictTraits>(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 176 | 3.26k | bool LoadProfileInput(const std::uint8_t* data, std::size_t size, curl::fuzzer::proto::Scenario* runtime) { | 177 | 3.26k | return ProfileFuzzerHooks<Traits>::LoadAndLower(data, size, runtime); | 178 | 3.26k | } |
bool proto_fuzzer::LoadProfileInput<proto_fuzzer::generated::DeepHttpTraits>(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 176 | 12.8k | bool LoadProfileInput(const std::uint8_t* data, std::size_t size, curl::fuzzer::proto::Scenario* runtime) { | 177 | 12.8k | return ProfileFuzzerHooks<Traits>::LoadAndLower(data, size, runtime); | 178 | 12.8k | } |
bool proto_fuzzer::LoadProfileInput<proto_fuzzer::generated::FastIpfsTraits>(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 176 | 9.35k | bool LoadProfileInput(const std::uint8_t* data, std::size_t size, curl::fuzzer::proto::Scenario* runtime) { | 177 | 9.35k | return ProfileFuzzerHooks<Traits>::LoadAndLower(data, size, runtime); | 178 | 9.35k | } |
bool proto_fuzzer::LoadProfileInput<proto_fuzzer::generated::FastHttpsTraits>(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 176 | 27.7k | bool LoadProfileInput(const std::uint8_t* data, std::size_t size, curl::fuzzer::proto::Scenario* runtime) { | 177 | 27.7k | return ProfileFuzzerHooks<Traits>::LoadAndLower(data, size, runtime); | 178 | 27.7k | } |
bool proto_fuzzer::LoadProfileInput<proto_fuzzer::generated::FastImapTraits>(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 176 | 5.28k | bool LoadProfileInput(const std::uint8_t* data, std::size_t size, curl::fuzzer::proto::Scenario* runtime) { | 177 | 5.28k | return ProfileFuzzerHooks<Traits>::LoadAndLower(data, size, runtime); | 178 | 5.28k | } |
bool proto_fuzzer::LoadProfileInput<proto_fuzzer::generated::FastGopherTraits>(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 176 | 7.65k | bool LoadProfileInput(const std::uint8_t* data, std::size_t size, curl::fuzzer::proto::Scenario* runtime) { | 177 | 7.65k | return ProfileFuzzerHooks<Traits>::LoadAndLower(data, size, runtime); | 178 | 7.65k | } |
bool proto_fuzzer::LoadProfileInput<proto_fuzzer::generated::FastFileTraits>(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 176 | 3.61k | bool LoadProfileInput(const std::uint8_t* data, std::size_t size, curl::fuzzer::proto::Scenario* runtime) { | 177 | 3.61k | return ProfileFuzzerHooks<Traits>::LoadAndLower(data, size, runtime); | 178 | 3.61k | } |
bool proto_fuzzer::LoadProfileInput<proto_fuzzer::generated::TimingTraits>(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 176 | 10.2k | bool LoadProfileInput(const std::uint8_t* data, std::size_t size, curl::fuzzer::proto::Scenario* runtime) { | 177 | 10.2k | return ProfileFuzzerHooks<Traits>::LoadAndLower(data, size, runtime); | 178 | 10.2k | } |
bool proto_fuzzer::LoadProfileInput<proto_fuzzer::generated::FastPop3Traits>(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 176 | 3.88k | bool LoadProfileInput(const std::uint8_t* data, std::size_t size, curl::fuzzer::proto::Scenario* runtime) { | 177 | 3.88k | return ProfileFuzzerHooks<Traits>::LoadAndLower(data, size, runtime); | 178 | 3.88k | } |
bool proto_fuzzer::LoadProfileInput<proto_fuzzer::generated::MultiTraits>(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 176 | 12.3k | bool LoadProfileInput(const std::uint8_t* data, std::size_t size, curl::fuzzer::proto::Scenario* runtime) { | 177 | 12.3k | return ProfileFuzzerHooks<Traits>::LoadAndLower(data, size, runtime); | 178 | 12.3k | } |
bool proto_fuzzer::LoadProfileInput<proto_fuzzer::generated::FastHttp3Traits>(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 176 | 6.98k | bool LoadProfileInput(const std::uint8_t* data, std::size_t size, curl::fuzzer::proto::Scenario* runtime) { | 177 | 6.98k | return ProfileFuzzerHooks<Traits>::LoadAndLower(data, size, runtime); | 178 | 6.98k | } |
bool proto_fuzzer::LoadProfileInput<proto_fuzzer::generated::CompatibilityTraits>(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 176 | 12.3k | bool LoadProfileInput(const std::uint8_t* data, std::size_t size, curl::fuzzer::proto::Scenario* runtime) { | 177 | 12.3k | return ProfileFuzzerHooks<Traits>::LoadAndLower(data, size, runtime); | 178 | 12.3k | } |
bool proto_fuzzer::LoadProfileInput<proto_fuzzer::generated::ResolverTraits>(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 176 | 8.14k | bool LoadProfileInput(const std::uint8_t* data, std::size_t size, curl::fuzzer::proto::Scenario* runtime) { | 177 | 8.14k | return ProfileFuzzerHooks<Traits>::LoadAndLower(data, size, runtime); | 178 | 8.14k | } |
bool proto_fuzzer::LoadProfileInput<proto_fuzzer::generated::ProxyTransportTraits>(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 176 | 7.99k | bool LoadProfileInput(const std::uint8_t* data, std::size_t size, curl::fuzzer::proto::Scenario* runtime) { | 177 | 7.99k | return ProfileFuzzerHooks<Traits>::LoadAndLower(data, size, runtime); | 178 | 7.99k | } |
bool proto_fuzzer::LoadProfileInput<proto_fuzzer::generated::FastHttp2Traits>(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 176 | 15.0k | bool LoadProfileInput(const std::uint8_t* data, std::size_t size, curl::fuzzer::proto::Scenario* runtime) { | 177 | 15.0k | return ProfileFuzzerHooks<Traits>::LoadAndLower(data, size, runtime); | 178 | 15.0k | } |
bool proto_fuzzer::LoadProfileInput<proto_fuzzer::generated::FastHttpTraits>(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 176 | 12.2k | bool LoadProfileInput(const std::uint8_t* data, std::size_t size, curl::fuzzer::proto::Scenario* runtime) { | 177 | 12.2k | return ProfileFuzzerHooks<Traits>::LoadAndLower(data, size, runtime); | 178 | 12.2k | } |
bool proto_fuzzer::LoadProfileInput<proto_fuzzer::generated::ApiTraits>(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 176 | 11.9k | bool LoadProfileInput(const std::uint8_t* data, std::size_t size, curl::fuzzer::proto::Scenario* runtime) { | 177 | 11.9k | return ProfileFuzzerHooks<Traits>::LoadAndLower(data, size, runtime); | 178 | 11.9k | } |
bool proto_fuzzer::LoadProfileInput<proto_fuzzer::generated::FastLdapTraits>(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 176 | 5.82k | bool LoadProfileInput(const std::uint8_t* data, std::size_t size, curl::fuzzer::proto::Scenario* runtime) { | 177 | 5.82k | return ProfileFuzzerHooks<Traits>::LoadAndLower(data, size, runtime); | 178 | 5.82k | } |
bool proto_fuzzer::LoadProfileInput<proto_fuzzer::generated::FastRtspTraits>(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 176 | 6.38k | bool LoadProfileInput(const std::uint8_t* data, std::size_t size, curl::fuzzer::proto::Scenario* runtime) { | 177 | 6.38k | return ProfileFuzzerHooks<Traits>::LoadAndLower(data, size, runtime); | 178 | 6.38k | } |
bool proto_fuzzer::LoadProfileInput<proto_fuzzer::generated::FastMqttTraits>(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 176 | 4.11k | bool LoadProfileInput(const std::uint8_t* data, std::size_t size, curl::fuzzer::proto::Scenario* runtime) { | 177 | 4.11k | return ProfileFuzzerHooks<Traits>::LoadAndLower(data, size, runtime); | 178 | 4.11k | } |
bool proto_fuzzer::LoadProfileInput<proto_fuzzer::generated::FastSecureWebSocketTraits>(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 176 | 7.47k | bool LoadProfileInput(const std::uint8_t* data, std::size_t size, curl::fuzzer::proto::Scenario* runtime) { | 177 | 7.47k | return ProfileFuzzerHooks<Traits>::LoadAndLower(data, size, runtime); | 178 | 7.47k | } |
bool proto_fuzzer::LoadProfileInput<proto_fuzzer::generated::H2ProxyTraits>(unsigned char const*, unsigned long, curl::fuzzer::proto::Scenario*) Line | Count | Source | 176 | 10.8k | bool LoadProfileInput(const std::uint8_t* data, std::size_t size, curl::fuzzer::proto::Scenario* runtime) { | 177 | 10.8k | return ProfileFuzzerHooks<Traits>::LoadAndLower(data, size, runtime); | 178 | 10.8k | } |
|
179 | | |
180 | | /// Exercise the typed mutation ABI once for the profiling timing target. |
181 | | /// @tparam Traits Generated adapter defining the concrete message type. |
182 | | template <typename Traits> |
183 | 10.2k | void ProbeTimingMutationHelpers() { |
184 | 10.2k | static const bool mutation_helpers_probed = [] { |
185 | 1 | constexpr std::size_t kBufferSize = 1024; |
186 | 1 | constexpr unsigned int kMutationSeed = 0x4355524cU; |
187 | | |
188 | 1 | curl::fuzzer::proto::Scenario runtime; |
189 | 1 | NormalizeScenarioForTarget(&runtime, Traits::kProfile, &Traits::PruneConditionalEligibility); |
190 | | |
191 | 1 | typename Traits::Message message; |
192 | 1 | Traits::Lift(&runtime, &message); |
193 | 1 | std::array<std::uint8_t, kBufferSize> first = {}; |
194 | 1 | const std::size_t original_size = message.ByteSizeLong(); |
195 | 1 | if (original_size > first.size()) { |
196 | 0 | return true; |
197 | 0 | } |
198 | 1 | (void)message.SerializeWithCachedSizesToArray(first.data()); |
199 | | |
200 | 1 | using Hooks = ProfileFuzzerHooks<Traits>; |
201 | 1 | std::array<std::uint8_t, kBufferSize> second = first; |
202 | 1 | std::array<std::uint8_t, kBufferSize> child = {}; |
203 | 1 | const std::size_t mutated_size = Hooks::CustomMutator(first.data(), original_size, first.size(), kMutationSeed); |
204 | 1 | const std::size_t crossed_size = Hooks::CustomCrossOver(first.data(), mutated_size, second.data(), original_size, |
205 | 1 | child.data(), child.size(), kMutationSeed); |
206 | 1 | const volatile std::size_t result_sizes[] = {mutated_size, crossed_size}; |
207 | 1 | (void)result_sizes; |
208 | 1 | return true; |
209 | 1 | }(); |
210 | 10.2k | (void)mutation_helpers_probed; |
211 | 10.2k | } |
212 | | |
213 | | /// Bind one generated adapter to the ordinary entrypoint helper interface. |
214 | | /// @tparam Traits Generated adapter defining the concrete message type. |
215 | | /// @return Immutable runtime descriptor binding all callbacks to `Traits`. |
216 | | template <typename Traits> |
217 | 0 | constexpr ProfileFuzzerTraits BindProfileFuzzer() { |
218 | 0 | using Hooks = ProfileFuzzerHooks<Traits>; |
219 | 0 | if constexpr (Traits::kProfile == TargetProfile::kTiming) { |
220 | 0 | return {Traits::kProfile, &Hooks::CustomMutator, &Hooks::CustomCrossOver, &LoadProfileInput<Traits>, |
221 | 0 | &ProbeTimingMutationHelpers<Traits>}; |
222 | 0 | } |
223 | 0 | return {Traits::kProfile, &Hooks::CustomMutator, &Hooks::CustomCrossOver, &LoadProfileInput<Traits>, nullptr}; |
224 | 0 | } Unexecuted instantiation: proto_fuzzer::ProfileFuzzerTraits proto_fuzzer::BindProfileFuzzer<proto_fuzzer::generated::FastTelnetTraits>() Unexecuted instantiation: proto_fuzzer::ProfileFuzzerTraits proto_fuzzer::BindProfileFuzzer<proto_fuzzer::generated::FastFtpTraits>() Unexecuted instantiation: proto_fuzzer::ProfileFuzzerTraits proto_fuzzer::BindProfileFuzzer<proto_fuzzer::generated::FastSmtpTraits>() Unexecuted instantiation: proto_fuzzer::ProfileFuzzerTraits proto_fuzzer::BindProfileFuzzer<proto_fuzzer::generated::HttpsH2Traits>() Unexecuted instantiation: proto_fuzzer::ProfileFuzzerTraits proto_fuzzer::BindProfileFuzzer<proto_fuzzer::generated::FastTftpTraits>() Unexecuted instantiation: proto_fuzzer::ProfileFuzzerTraits proto_fuzzer::BindProfileFuzzer<proto_fuzzer::generated::FastWebSocketTraits>() Unexecuted instantiation: proto_fuzzer::ProfileFuzzerTraits proto_fuzzer::BindProfileFuzzer<proto_fuzzer::generated::FastDictTraits>() Unexecuted instantiation: proto_fuzzer::ProfileFuzzerTraits proto_fuzzer::BindProfileFuzzer<proto_fuzzer::generated::DeepHttpTraits>() Unexecuted instantiation: proto_fuzzer::ProfileFuzzerTraits proto_fuzzer::BindProfileFuzzer<proto_fuzzer::generated::FastIpfsTraits>() Unexecuted instantiation: proto_fuzzer::ProfileFuzzerTraits proto_fuzzer::BindProfileFuzzer<proto_fuzzer::generated::FastHttpsTraits>() Unexecuted instantiation: proto_fuzzer::ProfileFuzzerTraits proto_fuzzer::BindProfileFuzzer<proto_fuzzer::generated::FastImapTraits>() Unexecuted instantiation: proto_fuzzer::ProfileFuzzerTraits proto_fuzzer::BindProfileFuzzer<proto_fuzzer::generated::FastGopherTraits>() Unexecuted instantiation: proto_fuzzer::ProfileFuzzerTraits proto_fuzzer::BindProfileFuzzer<proto_fuzzer::generated::FastFileTraits>() Unexecuted instantiation: proto_fuzzer::ProfileFuzzerTraits proto_fuzzer::BindProfileFuzzer<proto_fuzzer::generated::TimingTraits>() Unexecuted instantiation: proto_fuzzer::ProfileFuzzerTraits proto_fuzzer::BindProfileFuzzer<proto_fuzzer::generated::FastPop3Traits>() Unexecuted instantiation: proto_fuzzer::ProfileFuzzerTraits proto_fuzzer::BindProfileFuzzer<proto_fuzzer::generated::MultiTraits>() Unexecuted instantiation: proto_fuzzer::ProfileFuzzerTraits proto_fuzzer::BindProfileFuzzer<proto_fuzzer::generated::FastHttp3Traits>() Unexecuted instantiation: proto_fuzzer::ProfileFuzzerTraits proto_fuzzer::BindProfileFuzzer<proto_fuzzer::generated::CompatibilityTraits>() Unexecuted instantiation: proto_fuzzer::ProfileFuzzerTraits proto_fuzzer::BindProfileFuzzer<proto_fuzzer::generated::ResolverTraits>() Unexecuted instantiation: proto_fuzzer::ProfileFuzzerTraits proto_fuzzer::BindProfileFuzzer<proto_fuzzer::generated::ProxyTransportTraits>() Unexecuted instantiation: proto_fuzzer::ProfileFuzzerTraits proto_fuzzer::BindProfileFuzzer<proto_fuzzer::generated::FastHttp2Traits>() Unexecuted instantiation: proto_fuzzer::ProfileFuzzerTraits proto_fuzzer::BindProfileFuzzer<proto_fuzzer::generated::FastHttpTraits>() Unexecuted instantiation: proto_fuzzer::ProfileFuzzerTraits proto_fuzzer::BindProfileFuzzer<proto_fuzzer::generated::ApiTraits>() Unexecuted instantiation: proto_fuzzer::ProfileFuzzerTraits proto_fuzzer::BindProfileFuzzer<proto_fuzzer::generated::FastLdapTraits>() Unexecuted instantiation: proto_fuzzer::ProfileFuzzerTraits proto_fuzzer::BindProfileFuzzer<proto_fuzzer::generated::FastRtspTraits>() Unexecuted instantiation: proto_fuzzer::ProfileFuzzerTraits proto_fuzzer::BindProfileFuzzer<proto_fuzzer::generated::FastMqttTraits>() Unexecuted instantiation: proto_fuzzer::ProfileFuzzerTraits proto_fuzzer::BindProfileFuzzer<proto_fuzzer::generated::FastSecureWebSocketTraits>() Unexecuted instantiation: proto_fuzzer::ProfileFuzzerTraits proto_fuzzer::BindProfileFuzzer<proto_fuzzer::generated::H2ProxyTraits>() |
225 | | |
226 | | } // namespace proto_fuzzer |
227 | | |
228 | | #endif // PROTO_FUZZER_PROFILE_FUZZER_H_ |