mirror of https://gitee.com/openkylin/linux.git
exec.c, compat.c: fix count(), compat_count() bounds checking
With MAX_ARG_STRINGS set to 0x7FFFFFFF, and being passed to 'count()' and compat_count(), it would appear that the current max bounds check of fs/exec.c:394: if(++i > max) return -E2BIG; would never trigger. Since 'i' is of type int, so values would wrap and the function would continue looping. Simple fix seems to be chaning ++i to i++ and checking for '>='. Signed-off-by: Jason Baron <jbaron@redhat.com> Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: "Ollie Wild" <aaw@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
9679e4dd62
commit
362e6663ef
|
@ -1239,7 +1239,7 @@ static int compat_count(compat_uptr_t __user *argv, int max)
|
|||
if (!p)
|
||||
break;
|
||||
argv++;
|
||||
if(++i > max)
|
||||
if (i++ >= max)
|
||||
return -E2BIG;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue