Check out the new USENIX Web site. next up previous
Next: Experiments Up: Type-Assisted Dynamic Buffer Overflow Previous: Implementation


Limitations

There are two cases in which we cannot determine the size of automatic buffers; stack buffers dynamically allocated with alloca(), and variable-length automatic arrays (a GNU C compiler extension). They are limitations inherent in our solution.

The current implementation is also unable to determine the type of function scope static variables since they are not visible outside the declared function. For the same reason, we cannot protect buffers declared in a function scope functions (nested functions, another GNU C compiler extension). Although those symbols are not visible in the source file, they are visible in the compiled file. Thus, this problem is not inherent in our solution. In order to fix the problem, we need to express the type table in assembly language and append it to the compiled file. The current prototype is done at the source level, augmenting the type table written in C at the (preprocessed) source file.