]> git.ipfire.org Git - thirdparty/vectorscan.git/commitdiff
Fix #399 by correcting assert in buildFragmentPrograms (#400) develop
authorOlivia Trewin <trewinolivia@gmail.com>
Fri, 12 Jun 2026 14:05:24 +0000 (07:05 -0700)
committerGitHub <noreply@github.com>
Fri, 12 Jun 2026 14:05:24 +0000 (17:05 +0300)
Co-authored-by: Olivia Trewin <otrewin@cloudflare.com>
src/rose/rose_build_bytecode.cpp
unit/hyperscan/regressions.cpp

index 217dadb79a0289042c74df035ad72289d73f9175..72ee9b3b8d34f3900152149ba2200743cdb87d65 100644 (file)
@@ -2994,9 +2994,8 @@ void buildFragmentPrograms(const RoseBuildImpl &build,
         if (pfrag.included_delay_frag_id != INVALID_FRAG_ID &&
             !rebuild_prog.empty()) {
             const auto &cfrag = fragments[pfrag.included_delay_frag_id];
-            /** assert(pfrag.s.length() >= cfrag.s.length() && **/
-            assert(pfrag.s.length() == cfrag.s.length() &&
-                   !pfrag.s.any_nocase() != !cfrag.s.any_nocase());
+            // cppcheck-suppress comparisonOfTwoFuncsReturningBoolError
+            assert(pfrag.s.length() >= cfrag.s.length() && !pfrag.s.any_nocase() >= !cfrag.s.any_nocase());
             u32 child_offset = cfrag.delay_program_offset;
             DEBUG_PRINTF("child %u offset %u\n", cfrag.fragment_id,
                          child_offset);
index 5f1b2b0a1abee16264b76ed22069440bffd2c5d0..593f2099afc64b11cdca44c1dca82bf9c380f694 100644 (file)
@@ -498,4 +498,11 @@ TEST(utf8, charclass_issue_326) {
     err = hs_free_scratch(scratch);
     ASSERT_EQ(HS_SUCCESS, err);
     hs_free_database(db);
-}
\ No newline at end of file
+}
+
+TEST(bug339, delayed_fragment_assert) {
+    hs_database_t *db = buildDB(R"((?:1\d|3[01])(?:0[1-9]|1[01])\d)", 0, 0, HS_MODE_STREAM);
+    ASSERT_NE(nullptr, db);
+
+    hs_free_database(db);
+}