@@ -279,14 +279,16 @@ else()
279
279
endif ()
280
280
281
281
set (CURL_STATIC_LIB ${CURL_INSTALL_DIR} /lib/libcurl.a )
282
+ set (CURL_DEPS
283
+ nghttp2_external
284
+ ${OPENSSL_DEP}
285
+ zlib_external
286
+ zstd_external
287
+ libidn2_external
288
+ )
282
289
283
290
# Add dependencies for curl
284
- add_dependencies (curl_external
285
- nghttp2_external
286
- ${OPENSSL_DEP}
287
- zlib_external
288
- zstd_external
289
- libidn2_external )
291
+ add_dependencies (curl_external ${CURL_DEPS} )
290
292
291
293
# Now it's time for the main targets!
292
294
#
@@ -338,23 +340,21 @@ set(COMMON_LINK_LIBS
338
340
)
339
341
set (COMMON_LINK_OPTIONS ${LIB_FUZZING_ENGINE_FLAG} )
340
342
343
+ # Ensure that curl and its dependencies are built before the fuzzers
344
+ set (FUZZ_DEPS curl_external ${CURL_DEPS} ${LIB_FUZZING_ENGINE_DEP} )
345
+
341
346
# Helper macro to define a fuzzer target
342
347
macro (add_curl_fuzzer name proto )
343
348
add_executable (${name} ${COMMON_SOURCES} )
344
349
target_compile_options (${name} PRIVATE ${COMMON_FLAGS} -DFUZZ_PROTOCOLS_${proto} )
345
350
target_include_directories (${name} PRIVATE ${CURL_INCLUDE_DIRS} )
346
- target_link_libraries (${name} PRIVATE ${COMMON_LINK_LIBS} ${LIB_FUZZING_ENGINE} )
351
+ target_link_libraries (${name} PRIVATE ${COMMON_LINK_LIBS} )
347
352
target_link_options (${name} PRIVATE ${COMMON_LINK_OPTIONS} )
353
+ add_dependencies (${name} ${FUZZ_DEPS} )
348
354
endmacro ()
349
355
350
- # Main fuzzer (all protocols)
351
- add_executable (curl_fuzzer ${COMMON_SOURCES} )
352
- target_compile_options (curl_fuzzer PRIVATE ${COMMON_FLAGS} -DFUZZ_PROTOCOLS_ALL )
353
- target_include_directories (curl_fuzzer PRIVATE ${CURL_INCLUDE_DIRS} )
354
- target_link_libraries (curl_fuzzer PRIVATE ${COMMON_LINK_LIBS} ${LIB_FUZZING_ENGINE} )
355
- target_link_options (curl_fuzzer PRIVATE ${COMMON_LINK_OPTIONS} )
356
-
357
- # Protocol-specific fuzzers
356
+ # Main fuzzer and protocol-specific fuzzers
357
+ add_curl_fuzzer (curl_fuzzer ALL )
358
358
add_curl_fuzzer (curl_fuzzer_dict DICT )
359
359
add_curl_fuzzer (curl_fuzzer_file FILE )
360
360
add_curl_fuzzer (curl_fuzzer_ftp FTP )
@@ -376,39 +376,22 @@ target_compile_options(curl_fuzzer_bufq PRIVATE ${COMMON_FLAGS})
376
376
target_include_directories (curl_fuzzer_bufq PRIVATE ${CURL_INCLUDE_DIRS} )
377
377
target_link_libraries (curl_fuzzer_bufq PRIVATE ${COMMON_LINK_LIBS} )
378
378
target_link_options (curl_fuzzer_bufq PRIVATE ${COMMON_LINK_OPTIONS} )
379
+ add_dependencies (curl_fuzzer_bufq ${FUZZ_DEPS} )
379
380
380
381
# URL fuzzer
381
382
add_executable (fuzz_url fuzz_url.cc )
382
383
target_compile_options (fuzz_url PRIVATE ${COMMON_FLAGS} )
383
384
target_include_directories (fuzz_url PRIVATE ${CURL_INCLUDE_DIRS} )
384
385
target_link_libraries (fuzz_url PRIVATE ${COMMON_LINK_LIBS} )
385
386
target_link_options (fuzz_url PRIVATE ${COMMON_LINK_OPTIONS} )
387
+ add_dependencies (fuzz_url ${FUZZ_DEPS} )
386
388
387
389
# Unit test fuzzer
388
390
add_executable (curl_fuzzer_fnmatch fuzz_fnmatch.cc )
389
391
target_compile_options (curl_fuzzer_fnmatch PRIVATE ${COMMON_FLAGS} )
390
392
target_include_directories (curl_fuzzer_fnmatch PRIVATE ${CURL_INCLUDE_DIRS} )
391
393
target_link_libraries (curl_fuzzer_fnmatch PRIVATE ${COMMON_LINK_LIBS} )
392
394
target_link_options (curl_fuzzer_fnmatch PRIVATE ${COMMON_LINK_OPTIONS} )
393
-
394
- set (FUZZ_DEPS curl_external ${LIB_FUZZING_ENGINE_DEP} zlib_external nghttp2_external ${OPENSSL_DEP} )
395
- add_dependencies (curl_fuzzer ${FUZZ_DEPS} )
396
- add_dependencies (curl_fuzzer_dict ${FUZZ_DEPS} )
397
- add_dependencies (curl_fuzzer_file ${FUZZ_DEPS} )
398
- add_dependencies (curl_fuzzer_ftp ${FUZZ_DEPS} )
399
- add_dependencies (curl_fuzzer_gopher ${FUZZ_DEPS} )
400
- add_dependencies (curl_fuzzer_http ${FUZZ_DEPS} )
401
- add_dependencies (curl_fuzzer_https ${FUZZ_DEPS} )
402
- add_dependencies (curl_fuzzer_imap ${FUZZ_DEPS} )
403
- add_dependencies (curl_fuzzer_mqtt ${FUZZ_DEPS} )
404
- add_dependencies (curl_fuzzer_pop3 ${FUZZ_DEPS} )
405
- add_dependencies (curl_fuzzer_rtsp ${FUZZ_DEPS} )
406
- add_dependencies (curl_fuzzer_smb ${FUZZ_DEPS} )
407
- add_dependencies (curl_fuzzer_smtp ${FUZZ_DEPS} )
408
- add_dependencies (curl_fuzzer_tftp ${FUZZ_DEPS} )
409
- add_dependencies (curl_fuzzer_ws ${FUZZ_DEPS} )
410
- add_dependencies (curl_fuzzer_bufq ${FUZZ_DEPS} )
411
- add_dependencies (fuzz_url ${FUZZ_DEPS} )
412
395
add_dependencies (curl_fuzzer_fnmatch ${FUZZ_DEPS} )
413
396
414
397
# Create a custom target for all fuzzers
0 commit comments