Eric Biggers
7329a65587
usercopy: avoid potentially undefined behavior in pointer math
...
check_bogus_address() checked for pointer overflow using this expression,
where 'ptr' has type 'const void *':
ptr + n < ptr
Since pointer wraparound is undefined behavior, gcc at -O2 by default
treats it like the following, which would not behave as intended:
(long)n < 0
Fortunately, this doesn't currently happen for kernel code because kernel
code is compiled with -fno-strict-overflow. But the expression should be
fixed anyway to use well-defined integer arithmetic, since it could be
treated differently by different compilers in the future or could be
reported by tools checking for undefined behavior.
Signed-off-by: Eric Biggers <ebiggers@google.com >
Signed-off-by: Kees Cook <keescook@chromium.org >
2016-08-22 19:07:55 -07:00
..
2016-08-11 16:58:14 -07:00
2016-08-04 14:19:16 -06:00
2016-07-26 16:19:19 -07:00
2016-03-17 15:09:34 -07:00
2016-01-27 09:09:57 -05:00
2016-05-27 14:49:37 -07:00
2016-07-28 16:07:41 -07:00
2016-03-17 15:09:34 -07:00
2016-03-17 15:09:34 -07:00
2016-03-17 15:09:34 -07:00
2016-06-09 14:23:11 -07:00
2016-03-15 16:55:16 -07:00
2016-08-07 14:41:02 -06:00
2016-02-16 10:11:12 +01:00
2016-07-26 16:19:19 -07:00
2016-08-02 16:11:27 -04:00
2016-05-19 19:12:14 -07:00
2016-07-28 16:07:41 -07:00
2016-05-20 17:58:30 -07:00
2016-08-11 16:58:13 -07:00
2016-07-28 16:07:41 -07:00
2016-08-04 20:02:09 -04:00
2016-03-17 15:09:34 -07:00
2016-07-28 16:07:41 -07:00
2016-03-17 15:09:34 -07:00
2016-03-17 15:09:34 -07:00
2016-07-28 16:07:41 -07:00
2016-07-26 16:19:19 -07:00
2016-01-20 17:09:18 -08:00
2016-05-22 17:21:27 -07:00
2016-05-23 17:04:14 -07:00
2016-08-08 14:48:14 -07:00
2016-08-04 20:02:09 -04:00
2016-08-11 16:58:13 -07:00
2016-08-11 16:58:14 -07:00
2016-07-28 16:07:41 -07:00
2016-08-02 17:31:41 -04:00
2016-07-28 16:07:41 -07:00
2016-07-28 16:07:41 -07:00
2016-07-28 16:07:41 -07:00
2016-04-04 10:41:08 -07:00
2016-07-28 16:07:41 -07:00
2016-03-17 15:09:34 -07:00
2016-08-02 19:35:15 -04:00
2016-04-28 11:44:19 +02:00
2016-03-17 15:09:34 -07:00
2016-05-19 19:12:14 -07:00
2016-07-26 16:19:19 -07:00
2016-07-26 16:19:19 -07:00
2016-03-17 15:09:34 -07:00
2016-07-26 16:19:19 -07:00
2016-08-11 16:58:14 -07:00
2016-08-11 16:58:13 -07:00
2016-05-27 14:49:37 -07:00
2016-07-28 16:07:41 -07:00
2016-08-07 14:41:02 -06:00
2016-07-26 16:19:19 -07:00
2016-07-26 16:19:19 -07:00
2016-06-03 15:06:22 -07:00
2016-07-28 16:07:41 -07:00
2016-01-15 17:56:32 -08:00
2016-03-17 15:09:34 -07:00
2016-05-25 11:48:25 -04:00
2016-03-17 15:09:34 -07:00
2016-02-16 10:04:09 +01:00
2016-03-17 15:09:34 -07:00
2016-07-26 16:19:19 -07:00
2016-08-10 16:40:56 -07:00
2016-08-10 16:40:56 -07:00
2016-07-26 16:19:19 -07:00
2016-08-08 14:48:14 -07:00
2016-07-28 16:07:41 -07:00
2016-02-18 16:23:24 -08:00
2016-08-10 16:40:56 -07:00
2016-08-02 17:31:41 -04:00
2016-08-02 17:31:41 -04:00
2016-03-17 15:09:34 -07:00
2016-07-28 16:07:41 -07:00
2016-07-28 16:07:41 -07:00
2016-07-26 16:19:19 -07:00
2016-07-26 16:19:19 -07:00
2016-08-22 19:07:55 -07:00
2016-04-04 10:41:08 -07:00
2016-07-28 16:07:41 -07:00
2016-07-26 16:19:19 -07:00
2016-02-03 08:28:43 -08:00
2016-08-02 17:31:41 -04:00
2016-07-28 16:07:41 -07:00
2016-07-28 16:07:41 -07:00
2016-06-03 16:02:55 -07:00
2016-01-15 11:40:52 -08:00
2015-11-06 17:50:42 -08:00
2016-07-28 16:07:41 -07:00
2016-05-20 17:58:30 -07:00