11#include "full_coverage/dynamic_formatting.h"
12#include "full_coverage/public_api.h"
13#include "full_coverage/utility_api.h"
14#include "proto_fuzzer/allocation_fault_injection.h"
17namespace proto_fuzzer {
21class DeferredCurlGlobalReference final {
23 DeferredCurlGlobalReference() : initialized_(curl_global_init(CURL_GLOBAL_ALL) == CURLE_OK) {}
25 ~DeferredCurlGlobalReference() {
31 curl_global_cleanup();
32 FinalizeRegisteredCurlGlobalLifecyclesForExit();
36 DeferredCurlGlobalReference(
const DeferredCurlGlobalReference&) =
delete;
37 DeferredCurlGlobalReference& operator=(
const DeferredCurlGlobalReference&) =
delete;
53void RunApiCoverageProbesOnce() {
57 static const DeferredCurlGlobalReference global_reference;
58 static const bool completed = [] {
63 full_coverage::ExercisePublicApiCoverageWithInitializedCurl();
64 full_coverage::ExerciseUtilityApiCoverageWithInitializedCurl();
65 full_coverage::ExerciseDynamicFormattingCoverage();
68 (void)global_reference;
Process-once curl API probes for the structured API target.
Exclude a narrow harness-only operation from the allocation-failure plan.
Process-wide libcurl initialization and final cleanup.