summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorbcook <>2014-12-08 03:45:00 +0000
committerbcook <>2014-12-08 03:45:00 +0000
commit7e1777887543b9cec82799201142b404943cee1c (patch)
tree4c2b49673ec60196826e22affe71c6d1ad9f6ef1 /src
parent6b91ce8312bbed58c0683bd6145c28f92f00a4d5 (diff)
downloadopenbsd-7e1777887543b9cec82799201142b404943cee1c.tar.gz
openbsd-7e1777887543b9cec82799201142b404943cee1c.tar.bz2
openbsd-7e1777887543b9cec82799201142b404943cee1c.zip
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. discussed with tedu@ & deraadt@
Diffstat (limited to 'src')
-rw-r--r--src/lib/libc/stdlib/reallocarray.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/lib/libc/stdlib/reallocarray.c b/src/lib/libc/stdlib/reallocarray.c
index 7accd99e00..ed3244e22f 100644
--- a/src/lib/libc/stdlib/reallocarray.c
+++ b/src/lib/libc/stdlib/reallocarray.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: reallocarray.c,v 1.1 2014/05/08 21:43:49 deraadt Exp $ */ 1/* $OpenBSD: reallocarray.c,v 1.2 2014/12/08 03:45:00 bcook Exp $ */
2/* 2/*
3 * Copyright (c) 2008 Otto Moerbeek <otto@drijf.net> 3 * Copyright (c) 2008 Otto Moerbeek <otto@drijf.net>
4 * 4 *
@@ -24,7 +24,7 @@
24 * This is sqrt(SIZE_MAX+1), as s1*s2 <= SIZE_MAX 24 * This is sqrt(SIZE_MAX+1), as s1*s2 <= SIZE_MAX
25 * if both s1 < MUL_NO_OVERFLOW and s2 < MUL_NO_OVERFLOW 25 * if both s1 < MUL_NO_OVERFLOW and s2 < MUL_NO_OVERFLOW
26 */ 26 */
27#define MUL_NO_OVERFLOW (1UL << (sizeof(size_t) * 4)) 27#define MUL_NO_OVERFLOW ((size_t)1 << (sizeof(size_t) * 4))
28 28
29void * 29void *
30reallocarray(void *optr, size_t nmemb, size_t size) 30reallocarray(void *optr, size_t nmemb, size_t size)