From b795c0bfc1bfdee72f946bb6296069e1f5e98b0b Mon Sep 17 00:00:00 2001 From: Arne Welzel Date: Wed, 29 Nov 2023 18:50:14 +0100 Subject: [PATCH] rule-scan: Copy yytext strings When trying to use TOK_IDENT and TOK_STRING in a single rule, that resulted in "corrupt" strings. https://www.gnu.org/software/bison/manual/html_node/Strings-are-Destroyed.html --- src/rule-scan.l | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/rule-scan.l b/src/rule-scan.l index 1d9d17858a..0d023f0f44 100644 --- a/src/rule-scan.l +++ b/src/rule-scan.l @@ -187,17 +187,17 @@ finger { rules_lval.val = zeek::detail::Rule::FINGER; return TOK_PATTERN_TYPE; } {STRING} { *(yytext + strlen(yytext) - 1) = '\0'; - rules_lval.str = yytext + 1; + rules_lval.str = zeek::util::copy_string(yytext + 1); return TOK_STRING; } {ID} { - rules_lval.str = yytext; + rules_lval.str = zeek::util::copy_string(yytext); return TOK_IDENT; } {PID} { - rules_lval.str = yytext; + rules_lval.str = zeek::util::copy_string(yytext); return TOK_POLICY_SYMBOL; } @@ -216,7 +216,7 @@ finger { rules_lval.val = zeek::detail::Rule::FINGER; return TOK_PATTERN_TYPE; } else { *(yytext + len - 1) = '\0'; - rules_lval.str = yytext + 1; + rules_lval.str = zeek::util::copy_string(yytext + 1); } return TOK_PATTERN;