summaryrefslogtreecommitdiffstats
path: root/runtime/autoconf-save-stack-trace.c
diff options
context:
space:
mode:
authorJosh Stone <jistone@redhat.com>2009-12-21 18:26:47 -0800
committerJosh Stone <jistone@redhat.com>2009-12-21 18:44:02 -0800
commit63db23df87bf6408c0947053288b771d863ecf36 (patch)
tree6f32163dc8db6da09000d589c590e5fdb9a4e8b1 /runtime/autoconf-save-stack-trace.c
parent0f4e0b6fed0ee334cf33073be381ee22925b59a7 (diff)
downloadsystemtap-steved-63db23df87bf6408c0947053288b771d863ecf36.tar.gz
systemtap-steved-63db23df87bf6408c0947053288b771d863ecf36.tar.xz
systemtap-steved-63db23df87bf6408c0947053288b771d863ecf36.zip
PR11112: Check the full %m/M buffer, and limit the length
We already had code in place to try a deref on the requested memory buffer, but it was missing the static-precision case. Thus, it was possible to craft an address that would pass the check on the first byte but would pagefault at the end of the buffer. While we're at it, we should also be limiting the number of bytes in such a read, so even legitimately-huge buffers won't chew up kernel time. I've arbitrarily chosen 1024 as the limit, but we can revisit that later. (see also PR10490) TODO: we need a reliable testcase where a starting address is valid but the end address is bogus. In PR11112, the reproducer was using a huge precision to run off the heap, but we need something that will consistently work even with <1024 length.
Diffstat (limited to 'runtime/autoconf-save-stack-trace.c')
0 files changed, 0 insertions, 0 deletions