diff options
-rw-r--r-- | ReleaseNotes.txt | 2 | ||||
-rwxr-xr-x | scripts/buildtests.sh | 11 | ||||
-rw-r--r-- | src/libical/icalparser.c | 4 |
3 files changed, 10 insertions, 7 deletions
diff --git a/ReleaseNotes.txt b/ReleaseNotes.txt index 386c6e67..d986dc2f 100644 --- a/ReleaseNotes.txt +++ b/ReleaseNotes.txt @@ -62,7 +62,7 @@ Version 3.0.15 (UNRELEASED): to work properly between years 1902 and 10k. * Fix x-property comma handling and escaping * Built-in timezones updated to tzdata2022d (now with a VTIMEZONE for each time zone alias) - * Fix a fuzzer issue + * Fix fuzzer issues Version 3.0.14 (05 February 2022): ---------------------------------- diff --git a/scripts/buildtests.sh b/scripts/buildtests.sh index 80a7a3b6..b76b192f 100755 --- a/scripts/buildtests.sh +++ b/scripts/buildtests.sh @@ -625,6 +625,7 @@ then fi fi +DEFCMAKEOPTS="-DCMAKE_BUILD_TYPE=Debug" CMAKEOPTS="-DCMAKE_BUILD_TYPE=Debug -DGOBJECT_INTROSPECTION=False -DICAL_GLIB=False -DICAL_BUILD_DOCS=False" UUCCMAKEOPTS="$CMAKEOPTS -DCMAKE_DISABLE_FIND_PACKAGE_ICU=True" TZCMAKEOPTS="$CMAKEOPTS -DUSE_BUILTIN_TZDATA=True" @@ -644,7 +645,7 @@ CLANGTIDY test2 "$CMAKEOPTS" CLANGTIDY test2builtin "$TZCMAKEOPTS" #GCC based build tests -GCC_BUILD testgcc1 "" +GCC_BUILD testgcc1 "$DEFCMAKEOPTS" GCC_BUILD testgcc2 "$CMAKEOPTS" GCC_BUILD testgcc3 "$UUCCMAKEOPTS" if (test "`uname -s`" = "Linux") @@ -663,7 +664,7 @@ GCC_BUILD testgcc1builtin "-DUSE_BUILTIN_TZDATA=True" GCC_BUILD testgcc2builtin "$TZCMAKEOPTS" #Ninja build tests -NINJA_GCC_BUILD testninjagcc1 "" +NINJA_GCC_BUILD testninjagcc1 "$DEFCMAKEOPTS" NINJA_GCC_BUILD testninjagcc2 "-DICAL_GLIB=True" NINJA_GCC_BUILD testninjagcc3 "-DICAL_GLIB=True -DICAL_GLIB_VAPI=ON -DGOBJECT_INTROSPECTION=True" NINJA_GCC_BUILD testninjagcc4 "-DSHARED_ONLY=True -DICAL_GLIB=False" @@ -672,7 +673,7 @@ NINJA_GCC_BUILD testninjagcc6 "-DSTATIC_ONLY=True -DICAL_GLIB=False" NINJA_GCC_BUILD testninjagcc7 "-DSTATIC_ONLY=True -DICAL_GLIB=True -DENABLE_GTK_DOC=False" NINJA_GCC_BUILD testninjagcc9 "-DSHARED_ONLY=True -DICAL_GLIB=True -DGOBJECT_INTROSPECTION=True -DICAL_GLIB_VAPI=ON" -CLANG_BUILD testclang1 "" +CLANG_BUILD testclang1 "$DEFCMAKEOPTS" CLANG_BUILD testclang2 "$CMAKEOPTS" CLANG_BUILD testclang3 "$UUCCMAKEOPTS" #not supported with clang yet CLANG_BUILD testclang4lto "$LTOCMAKEOPTS" @@ -693,14 +694,14 @@ MEMCONSIST_BUILD test4memc "$UUCCMAKEOPTS" #MEMCONSIST_BUILD test5memc "$GLIBOPTS" #Address sanitizer -ASAN_BUILD test1asan "" +ASAN_BUILD test1asan "$DEFCMAKEOPTS" ASAN_BUILD test2asan "$CMAKEOPTS" ASAN_BUILD test3asan "$TZCMAKEOPTS" ASAN_BUILD test4asan "$UUCCMAKEOPTS" ASAN_BUILD test5asan "$GLIBOPTS" #Thread sanitizer -TSAN_BUILD test1tsan "" +TSAN_BUILD test1tsan "$DEFCMAKEOPTS" TSAN_BUILD test2tsan "$CMAKEOPTS" TSAN_BUILD test3tsan "$TZCMAKEOPTS" TSAN_BUILD test4tsan "$UUCCMAKEOPTS" diff --git a/src/libical/icalparser.c b/src/libical/icalparser.c index 295dced9..ea192c38 100644 --- a/src/libical/icalparser.c +++ b/src/libical/icalparser.c @@ -627,6 +627,7 @@ icalcomponent *icalparser_parse(icalparser *parser, icalparser_line_gen_func line_gen_func) { char *line; + unsigned int cnt = 0; icalcomponent *c = 0; icalcomponent *root = 0; icalerrorstate es = icalerror_get_error_state(ICAL_MALFORMEDDATA_ERROR); @@ -637,6 +638,7 @@ icalcomponent *icalparser_parse(icalparser *parser, icalerror_set_error_state(ICAL_MALFORMEDDATA_ERROR, ICAL_ERROR_NONFATAL); do { + cnt++; line = icalparser_get_line(parser, line_gen_func); if ((c = icalparser_add_line(parser, line)) != 0) { @@ -676,7 +678,7 @@ icalcomponent *icalparser_parse(icalparser *parser, icalmemory_free_buffer(line); cont = 1; } - } while (cont); + } while (cont && cnt < TMP_BUF_SIZE); icalerror_set_error_state(ICAL_MALFORMEDDATA_ERROR, es); |