diff options
author | Brent Cook <bcook@openbsd.org> | 2014-12-13 08:55:59 +0100 |
---|---|---|
committer | Guillem Jover <guillem@hadrons.org> | 2015-09-23 07:59:34 +0200 |
commit | 9688ab26b921e372cc296d4d1b0d48cbcf6a96c5 (patch) | |
tree | fd0bc0cba72f7999f4cd85a94f942cf7fea6c893 /src | |
parent | 025b44800e97f61c31b9979cc61a7b443feda05e (diff) |
Avoid left shift overflow in reallocarray
Some 64-bit platforms (e.g. Windows 64) have a 32-bit long. So, shifting
1UL 32-bits to the left causes an overflow. This replaces the constant
1UL with (size_t)1 so that we get the correct constant size for the
platform.
Import from OpenBSD.
Signed-off-by: Guillem Jover <guillem@hadrons.org>
Diffstat (limited to 'src')
-rw-r--r-- | src/reallocarray.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/reallocarray.c b/src/reallocarray.c index 7accd99..68baca2 100644 --- a/src/reallocarray.c +++ b/src/reallocarray.c @@ -1,4 +1,4 @@ -/* $OpenBSD: reallocarray.c,v 1.1 2014/05/08 21:43:49 deraadt Exp $ */ +/* $OpenBSD: reallocarray.c,v 1.2 2014/12/08 03:45:00 bcook Exp $ */ /* * Copyright (c) 2008 Otto Moerbeek <otto@drijf.net> * @@ -24,7 +24,7 @@ * This is sqrt(SIZE_MAX+1), as s1*s2 <= SIZE_MAX * if both s1 < MUL_NO_OVERFLOW and s2 < MUL_NO_OVERFLOW */ -#define MUL_NO_OVERFLOW (1UL << (sizeof(size_t) * 4)) +#define MUL_NO_OVERFLOW ((size_t)1 << (sizeof(size_t) * 4)) void * reallocarray(void *optr, size_t nmemb, size_t size) |