Open kkysen opened 1 month ago
We can't have variadic functions at compartment boundaries. Is it possible to move the boundary up or down one function in the call stack?
We can't have variadic functions at compartment boundaries. Is it possible to move the boundary up or down one function in the call stack?
I thought @rinon said this is okay, just that it'll just run the fn ptr in compartment 0 instead, which should be fine for just logging things (hopefully).
When the
IA2_TYPE_*
for a variadic function is generated,struct __va_list_tag *
is used. However, this type is, IIUC, supposed to be private, resulting in errors like this:That is, the
struct __va_list_tag *
creates some new anonymousstruct __va_list_tag
type that's different from the privatestruct __va_list_tag
type fromstdarg.h
, which publically exposes it throughva_list
, which istypedef
'd/macro'd tostruct __va_list_tag *
. Thus, I'm pretty sure that we should be usingva_list
here instead, and changing the code incallgate_wrapper.h
to useva_list
instead fixes this error.