11#ifndef PROTO_FUZZER_OPTION_APPLY_H_
12#define PROTO_FUZZER_OPTION_APPLY_H_
20#include "curl_fuzzer.pb.h"
24namespace proto_fuzzer {
35class ScopedTraceReset final {
37 ScopedTraceReset() { (void)curl_global_trace(
"-all"); }
38 ~ScopedTraceReset() { (void)curl_global_trace(
"-all"); }
40 ScopedTraceReset(
const ScopedTraceReset&) =
delete;
41 ScopedTraceReset& operator=(
const ScopedTraceReset&) =
delete;
42 ScopedTraceReset(ScopedTraceReset&&) =
delete;
43 ScopedTraceReset& operator=(ScopedTraceReset&&) =
delete;
47 const std::string& trace_config = {});
49CURLcode ApplySetOption(CURL* easy,
const curl::fuzzer::proto::SetOption& option);
51CURLcode ApplyTlsClientCredentialProfile(CURL* easy, curl::fuzzer::proto::TlsClientCredentialProfile profile);
53std::size_t RuntimeOptionCount(
const curl::fuzzer::proto::Scenario& scenario);
55std::size_t ApplyScenarioOptions(CURL* easy,
const curl::fuzzer::proto::Scenario& scenario);
Common ownership types for independently cleaned-up curl handles.
std::unique_ptr< curl_slist, CurlSlistDeleter > CurlSlistPtr
Unique ownership of a caller-owned curl_slist.
CurlSlistPtr ApplyBaselineOptions(CURL *easy, curl::fuzzer::proto::Scheme scheme, bool trace_ids, const std::string &trace_config)
Apply deterministic routing, timeout, output, and persistence defaults.
Pure interpretation and normalization of structured curl options.