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;
|
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 fullname = detail::make_full_var_name(module_name.c_str(), name);
|
||||||
auto id = id::find(fullname);
|
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