it sounds like a classic "this can only be solved by capabilities vs. access lists" problem.

This came right after we were taught how to write buffer overflows. Wheee! ;)