tests: introduce ffi_cdef_proto_test #105
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
LuaJIT has a FFI library which allows calling external C functions and using C data structures from a pure Lua code, see [1].
According to a FFI API documentation [2] the Lua function
ffi.cdef(def)
adds multiple C declarations for types or external symbols (named variables or functions).def
must be a Lua string. The contents of the stringdef
must be a sequence of C declarations, separated by semicolons. The C parser complies to the C99 language standard plus the extensions described in [3].Note, LuaJIT C parser is not a validating C parser. It expects and accepts correctly formed C declarations. Therefore without grammar-aware fuzzing we will face with a false-positive crashes.
The patch adds a grammar-aware test, where C declarations generated automatically using Protobuf grammar and LibProtoBuf-mutator and then serialize Protobuf structure to a string.
An example of bug in
src/lj_cparse.c
is LJ#1114.