Commit graph

14 commits

Author SHA1 Message Date
Tim Wojtulewicz
867d91b535 bifcl: Some other minor cleanup 2025-08-20 08:52:25 -07:00
Tim Wojtulewicz
23a5e46b8e bifcl: Minor cleanup of include files 2025-08-20 08:52:25 -07:00
Tim Wojtulewicz
f2cd4ae3e6 bifcl: Reformat Bifcl in Spicy style 2025-08-20 08:52:25 -07:00
Arne Welzel
e7cce57f2b bifcl: Render runtime type checks for var_args bifs
Currently, Zeek disables any static type checking for var_arg bifs.
However, the generated preamble for var_args bifs assume that
typed positional arguments are correctly typed and blindly calls
the type converters on them. This easily triggers abort()s at runtime
currently when a script mistakenly uses the wrong types for var_arg
bifs. For example, calling publish_rr() with a port instead of a string
causes a hard-abort with Zeek 5.0.8.

    $ zeek -e 'Cluster::publish_rr(Cluster::Pool(), 80/tcp)'
    fatal error in <no location>: Val::CONVERTER (port/string) (80/tcp)
    Aborted (core dumped)

Extend bifcl so that for var_arg functions and the types that bifcl understands,
we render a runtime type check and explicit early return to avoid the abort().
For any/other types, the implementer of the bif continuous to be responsible
for type checking.

This isn't solving the var_args situation generally, but avoids some
ad-hoc fixes trickling in current bif implementations.

Some references:

https://github.com/zeek/zeek/issues/1523
https://github.com/zeek/zeek/issues/2425
https://github.com/zeek/zeek/issues/2935
https://github.com/zeek/zeek/pull/2950
2025-08-20 08:52:25 -07:00
Tim Wojtulewicz
8e295df115 bifcl: Other minor cleanups 2025-08-20 08:52:25 -07:00
Tim Wojtulewicz
3a18b2144c bifcl: Add clang-format and run it on everything 2025-08-20 08:52:25 -07:00
Tim Wojtulewicz
e080c5c6b2 bifcl: Remove remaining uses of Bro naming 2025-08-20 08:52:25 -07:00
Tim Wojtulewicz
279d5f3fad bifcl: Remove v4.1 deprecation warnings 2025-08-20 08:52:25 -07:00
Jon Siwek
d72884064a bifcl: Deprecate names in BifConst, replace with zeek::BifConst
Some Val* types are also replaced with IntrusivePtr
2025-08-20 08:52:24 -07:00
Jon Siwek
b29ecfd822 bifcl: Deprecate BifEvent::generate_*, add BifEvent::enqueue_* 2025-08-20 08:52:24 -07:00
Jon Siwek
7009f1dda6 bifcl: Fix header include guards 2025-08-20 08:52:24 -07:00
Jon Siwek
a86b98bb9e bifcl: Move headers into include/ subdir
This avoids potential problems with libc++ 8+ on case-insensitive file
systems due to inclusion of a new header called <version> which will end
up conflicting with the VERSION file if the search path includes the
project root.
2025-08-20 08:52:24 -07:00
Tim Wojtulewicz
e64ec54172
Revert "Move BinPAC, bifcl, af_packet, and gen_zam submodules into main zeek repo" 2025-08-15 15:11:22 -07:00
Tim Wojtulewicz
68926faf47 Move the bifcl code into the main Zeek repository
This is based on commit 5947749f7850b075f11d6a2aaefe7dad4f63cb62f from
the bifcl repository.
2025-08-15 13:57:27 -07:00