From fb85a19fa8bf63c8a1e7a2143afae49f582aee00 Mon Sep 17 00:00:00 2001 From: Jon Siwek Date: Fri, 23 Oct 2020 14:17:10 -0700 Subject: [PATCH] GH-1245: require TLD of hostname literals to start with a letter --- src/scan.l | 3 ++- .../btest/Baseline/language.invalid-hostnames-2/out | 2 ++ testing/btest/Baseline/language.invalid-hostnames/out | 2 ++ testing/btest/language/invalid-hostnames.zeek | 10 ++++++++++ 4 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 testing/btest/Baseline/language.invalid-hostnames-2/out create mode 100644 testing/btest/Baseline/language.invalid-hostnames/out create mode 100644 testing/btest/language/invalid-hostnames.zeek diff --git a/src/scan.l b/src/scan.l index df9e9fa2ce..941345557d 100644 --- a/src/scan.l +++ b/src/scan.l @@ -142,6 +142,7 @@ FILE [^ \t\n]+ PREFIX [^ \t\n]+ FLOAT (({D}*"."?{D})|({D}"."?{D}*))([eE][-+]?{D})? H [A-Za-z0-9][A-Za-z0-9\-]* +HTLD [A-Za-z][A-Za-z0-9\-]* ESCSEQ (\\([^\n]|[0-7]+|x[[:xdigit:]]+)) %% @@ -502,7 +503,7 @@ F RET_CONST(zeek::val_mgr->False()->Ref()) "0x"{HEX}+ RET_CONST(zeek::val_mgr->Count(static_cast(strtoull(yytext, 0, 16))).release()) -{H}("."{H})+ RET_CONST(zeek::detail::dns_mgr->LookupHost(yytext).release()) +({H}".")+{HTLD} RET_CONST(zeek::detail::dns_mgr->LookupHost(yytext).release()) \"([^\\\n\"]|{ESCSEQ})*\" { const char* text = yytext; diff --git a/testing/btest/Baseline/language.invalid-hostnames-2/out b/testing/btest/Baseline/language.invalid-hostnames-2/out new file mode 100644 index 0000000000..6251abd174 --- /dev/null +++ b/testing/btest/Baseline/language.invalid-hostnames-2/out @@ -0,0 +1,2 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. +error in <...>/invalid-hostnames.zeek, line 4: syntax error, at or near "f" diff --git a/testing/btest/Baseline/language.invalid-hostnames/out b/testing/btest/Baseline/language.invalid-hostnames/out new file mode 100644 index 0000000000..7ffd42ba8b --- /dev/null +++ b/testing/btest/Baseline/language.invalid-hostnames/out @@ -0,0 +1,2 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. +error in <...>/invalid-hostnames.zeek, line 4: unknown identifier print0, at or near "print0" diff --git a/testing/btest/language/invalid-hostnames.zeek b/testing/btest/language/invalid-hostnames.zeek new file mode 100644 index 0000000000..62197d25db --- /dev/null +++ b/testing/btest/language/invalid-hostnames.zeek @@ -0,0 +1,10 @@ +# @TEST-EXEC-FAIL: zeek -b %INPUT >out 2>&1 +# @TEST-EXEC: TEST_DIFF_CANONIFIER=$SCRIPTS/diff-remove-abspath btest-diff out + +print0.0000000000005; + +# @TEST-START-NEXT + +# This is not a floating-point literal (like you'd see in C/C++) and it's +# also not a valid hostname since the TLD does not start with a letter. +print 0.05f;