elf: do not use variable length arrays on the stack
authorBarret Rhoden <brho@cs.berkeley.edu>
Fri, 31 May 2019 18:35:09 +0000 (14:35 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Fri, 31 May 2019 18:35:09 +0000 (14:35 -0400)
commit944e0b9a9afff7edefbc6bb48708d1d86243437b
tree224cdd6e7d8cc4e728f82503ed3c09fcdaa0e64a
parent15e3aa6bb2fd0ce95ec564e598411b52550f94e5
elf: do not use variable length arrays on the stack

To make matters worse, the size of these arrays was controlled by
userspace.  You could jump off the end of your stack, or even jump the
guard pages.

The long term fix is to yank all of this ELF loading out of the kernel.
In the short term, I just removed the on-stack arrays.  For remap(),
the easiest thing was to just remove the intermediate array and copy the
pointer values directly to userspace.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
kern/src/elf.c