From 12e0dc110be6701e2d8ecfff654e6216a0de7072 Mon Sep 17 00:00:00 2001 From: Arne Welzel Date: Wed, 27 Sep 2023 09:49:51 +0200 Subject: [PATCH] zeek-setup: Early exit when parsing failed When there are errors reported during yyparse(), Zeek still continued running initialization functions like init_general_global_var(), init_net_var() and run_bif_initializers(). These usually call abort() in unexpected situations causing misleading and confusing errors. This patch prevents this by exiting earlier. Closes #3316 --- src/zeek-setup.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/zeek-setup.cc b/src/zeek-setup.cc index 3aaa2dd331..ed8455adea 100644 --- a/src/zeek-setup.cc +++ b/src/zeek-setup.cc @@ -820,13 +820,16 @@ SetupResult setup(int argc, char** argv, Options* zopts) // when we actually end up reading interactively from stdin. set_signal_mask(false); run_state::is_parsing = true; - yyparse(); + int yyparse_result = yyparse(); run_state::is_parsing = false; set_signal_mask(true); RecordVal::DoneParsing(); TableVal::DoneParsing(); + if ( yyparse_result != 0 || zeek::reporter->Errors() > 0 ) + exit(1); + init_general_global_var(); init_net_var(); run_bif_initializers();