mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 14:48:21 +00:00
Add enum value negative check
There was one already at parse time, this adds a check later so that cases like overflows or internal enums with negative values get caught.
This commit is contained in:
parent
d3dd8a155d
commit
08348cd177
3 changed files with 16 additions and 0 deletions
|
@ -1542,6 +1542,12 @@ void EnumType::CheckAndAddName(const string& module_name, const char* name, zeek
|
|||
return;
|
||||
}
|
||||
|
||||
if ( val < 0 ) {
|
||||
reporter->Error("enumerator value cannot be negative");
|
||||
SetError();
|
||||
return;
|
||||
}
|
||||
|
||||
auto fullname = detail::make_full_var_name(module_name.c_str(), name);
|
||||
auto id = id::find(fullname);
|
||||
|
||||
|
|
3
testing/btest/Baseline/language.enum-negative/output
Normal file
3
testing/btest/Baseline/language.enum-negative/output
Normal file
|
@ -0,0 +1,3 @@
|
|||
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
||||
error in <...>/enum-negative.zeek, line 5: enumerator is not a count constant
|
||||
error in <...>/enum-negative.zeek, line 6: enumerator value cannot be negative
|
7
testing/btest/language/enum-negative.zeek
Normal file
7
testing/btest/language/enum-negative.zeek
Normal file
|
@ -0,0 +1,7 @@
|
|||
# @TEST-EXEC-FAIL: zeek -b %INPUT >output 2>&1
|
||||
# @TEST-EXEC: TEST_DIFF_CANONIFIER="$SCRIPTS/diff-remove-abspath" btest-diff output
|
||||
|
||||
type my_enum: enum {
|
||||
explicitly_negative = -1,
|
||||
overflow = 9223372036854775808,
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue