summaryrefslogtreecommitdiff
path: root/include/objalloc.h
diff options
context:
space:
mode:
authorFlorian Weimer <fweimer@redhat.com>2012-09-18 10:34:05 +0200
committerFlorian Weimer <fw@gcc.gnu.org>2012-09-18 10:34:05 +0200
commited770de906725cde105e3b70fbfde825f713a689 (patch)
treea72ef177002760bf83db64fa7e7131d153c945a0 /include/objalloc.h
parent4d3999876e3c70b0d6bea7884b24953404055778 (diff)
PR other/54411: integer overflow in objalloc_alloc
2012-09-18 Florian Weimer <fweimer@redhat.com> PR other/54411 * objalloc.h (objalloc_alloc): Do not use fast path on wraparound. 2012-09-18 Florian Weimer <fweimer@redhat.com> PR other/54411 * objalloc.c (_objalloc_alloc): Add overflow check covering alignment and CHUNK_HEADER_SIZE addition. From-SVN: r191413
Diffstat (limited to 'include/objalloc.h')
-rw-r--r--include/objalloc.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/include/objalloc.h b/include/objalloc.h
index 36772d17b50..52857663ba2 100644
--- a/include/objalloc.h
+++ b/include/objalloc.h
@@ -1,5 +1,5 @@
/* objalloc.h -- routines to allocate memory for objects
- Copyright 1997, 2001 Free Software Foundation, Inc.
+ Copyright 1997-2012 Free Software Foundation, Inc.
Written by Ian Lance Taylor, Cygnus Solutions.
This program is free software; you can redistribute it and/or modify it
@@ -91,7 +91,7 @@ extern void *_objalloc_alloc (struct objalloc *, unsigned long);
if (__len == 0) \
__len = 1; \
__len = (__len + OBJALLOC_ALIGN - 1) &~ (OBJALLOC_ALIGN - 1); \
- (__len <= __o->current_space \
+ (__len != 0 && __len <= __o->current_space \
? (__o->current_ptr += __len, \
__o->current_space -= __len, \
(void *) (__o->current_ptr - __len)) \