diff --git a/CMakeLists.txt b/CMakeLists.txt index 96bec4f..c4f9d8e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -81,8 +81,6 @@ TARGET_LINK_LIBRARIES(99_tracks cue) if(BUILD_FUZZER) ADD_EXECUTABLE(fuzz ${CMAKE_SOURCE_DIR}/oss-fuzz/fuzz.cpp) TARGET_LINK_LIBRARIES(fuzz cue $ENV{LIB_FUZZING_ENGINE}) - ADD_EXECUTABLE(fuzz_full_coverage ${CMAKE_SOURCE_DIR}/oss-fuzz/fuzz_full_coverage.cpp) - TARGET_LINK_LIBRARIES(fuzz_full_coverage cue $ENV{LIB_FUZZING_ENGINE}) endif() INCLUDE(Dart) diff --git a/oss-fuzz/build.sh b/oss-fuzz/build.sh index 22ccb37..0b02d0a 100755 --- a/oss-fuzz/build.sh +++ b/oss-fuzz/build.sh @@ -4,14 +4,13 @@ cd $WORK cmake -DBUILD_FUZZER=ON -DCMAKE_BUILD_TYPE=Release $SRC/libcue make -for fuzzer_name in fuzz fuzz_full_coverage; do - cp ${fuzzer_name} $OUT/${fuzzer_name} - cp $SRC/libcue/oss-fuzz/cue.dict $OUT/${fuzzer_name}.dict +fuzzer_name=fuzz +cp ${fuzzer_name} $OUT/${fuzzer_name} +cp $SRC/libcue/oss-fuzz/cue.dict $OUT/${fuzzer_name}.dict - find $SRC/libcue/t -iname "*.cue" | \ - xargs zip $OUT/${fuzzer_name}_seed_corpus.zip - find $SRC/libcue/oss-fuzz/corpus -iname "*.cue" | \ - xargs zip $OUT/${fuzzer_name}_seed_corpus.zip +find $SRC/libcue/t -iname "*.cue" | \ + xargs zip $OUT/${fuzzer_name}_seed_corpus.zip +find $SRC/libcue/oss-fuzz/corpus -iname "*.cue" | \ + xargs zip $OUT/${fuzzer_name}_seed_corpus.zip - echo -en "[libfuzzer]\nclose_fd_mask=2\n" >$OUT/${fuzzer_name}.options -done +echo -en "[libfuzzer]\nclose_fd_mask=2\n" >$OUT/${fuzzer_name}.options diff --git a/oss-fuzz/fuzz_full_coverage.cpp b/oss-fuzz/fuzz_full_coverage.cpp deleted file mode 100644 index 24bb54e..0000000 --- a/oss-fuzz/fuzz_full_coverage.cpp +++ /dev/null @@ -1,119 +0,0 @@ -#include -#include -#include -#include -#include "libcue.h" - -extern "C" int LLVMFuzzerTestOneInput (const uint8_t *data, size_t size); - -#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION - -/* -** Read files named on the command-line and invoke the fuzzer harness for -** each one. -*/ -int main (int argc, char **argv) -{ - FILE *in; - int i; - int nErr = 0; - uint8_t *zBuf = 0; - size_t sz; - - for (i = 1; i < argc; i++) - { - const char *zFilename = argv[i]; - in = fopen (zFilename, "rb"); - if (in == 0) - { - fprintf (stderr, "cannot open \"%s\"\n", zFilename); - nErr++; - continue; - } - fseek (in, 0, SEEK_END); - sz = ftell (in); - rewind (in); - zBuf = (uint8_t*)realloc (zBuf, sz); - if (zBuf == 0) - { - fprintf(stderr, "cannot malloc() for %d bytes\n", (int)sz); - exit(1); - } - if (fread (zBuf, sz, 1, in) != 1) - { - fprintf (stderr, "cannot read %d bytes from \"%s\"\n", - (int)sz, zFilename); - nErr++; - } - else - { - printf ("%s... ", zFilename); - fflush (stdout); - (void)LLVMFuzzerTestOneInput (zBuf, sz); - printf ("ok\n"); - } - fclose (in); - } - free (zBuf); - return nErr; -} - -#endif - -extern "C" int LLVMFuzzerTestOneInput (const uint8_t *data, size_t size) -{ - char* str = (char*)malloc (size + 1); - - if (!str) - return -1; - - memcpy (str, data, size); - str[size] = '\0'; - - Cd *cd = cue_parse_string (str); - if (cd == NULL) { - free (str); - return -1; - } - - /* Cover CD functions */ - cd_get_mode (cd); - cd_get_cdtextfile (cd); - const int ntracks = cd_get_ntrack (cd); - - /* Cover CDTEXT functions */ - Cdtext *cdtext = cd_get_cdtext (cd); - for (int pti = -1; pti <= PTI_END; pti++) - cdtext_get ((enum Pti)pti, cdtext); - - /* Cover REM functions */ - Rem *rem = cd_get_rem (cd); - if (rem != NULL) - for (unsigned int i = -1; i <= REM_END; i++) - rem_get (i, rem); - - /* Cover Track functions */ - for (int i = -1; i <= ntracks; i++) - { - Track *track = cd_get_track (cd, i); - if (track == NULL) - continue; - track_get_filename (track); - track_get_start (track); - track_get_length (track); - track_get_mode (track); - track_get_sub_mode (track); - track_is_set_flag (track, (enum TrackFlag)0); - track_get_zero_pre (track); - track_get_zero_post (track); - track_get_isrc (track); - track_get_index (track, 0); - track_get_index (track, -1); - track_get_cdtext (track); - } - - cd_delete (cd); - - free (str); - return 0; -} \ No newline at end of file