aboutsummaryrefslogtreecommitdiff
path: root/tools/perf/util/scripting-engines/trace-event-python.c
diff options
context:
space:
mode:
authorDjalal Harouni <[email protected]>2012-07-30 14:42:26 -0700
committerLinus Torvalds <[email protected]>2012-07-30 17:25:20 -0700
commite8905ec27e2f4ea1b9f7e03df68a060b3ae6fca8 (patch)
tree9c9cdb2e443338be6e46c61469bd12833bce7853 /tools/perf/util/scripting-engines/trace-event-python.c
parent108ceeb020bb3558fe175a3fc8b60fd6c1a2a279 (diff)
proc: environ_read() make sure offset points to environment address range
Currently the following offset and environment address range check in environ_read() of /proc/<pid>/environ is buggy: int this_len = mm->env_end - (mm->env_start + src); if (this_len <= 0) break; Large or negative offsets on /proc/<pid>/environ converted to 'unsigned long' may pass this check since '(mm->env_start + src)' can overflow and 'this_len' will be positive. This can turn /proc/<pid>/environ to act like /proc/<pid>/mem since (mm->env_start + src) will point and read from another VMA. There are two fixes here plus some code cleaning: 1) Fix the overflow by checking if the offset that was converted to unsigned long will always point to the [mm->env_start, mm->env_end] address range. 2) Remove the truncation that was made to the result of the check, storing the result in 'int this_len' will alter its value and we can not depend on it. For kernels that have commit b409e578d ("proc: clean up /proc/<pid>/environ handling") which adds the appropriate ptrace check and saves the 'mm' at ->open() time, this is not a security issue. This patch is taken from the grsecurity patch since it was just made available. Signed-off-by: Djalal Harouni <[email protected]> Cc: Oleg Nesterov <[email protected]> Cc: Brad Spengler <[email protected]> Acked-by: Kees Cook <[email protected]> Cc: David Rientjes <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
Diffstat (limited to 'tools/perf/util/scripting-engines/trace-event-python.c')
0 files changed, 0 insertions, 0 deletions