Skip to content

Commit

Permalink
Update.
Browse files Browse the repository at this point in the history
2002-08-03  Jakub Jelinek  <jakub@redhat.com>
	    Ulrich Drepper  <drepper@redhat.com>

	* malloc/malloc.c (public_cALLOc): Only divide if at least one of
	arguments is big enough to cause an overflow.
  • Loading branch information
Ulrich Drepper committed Aug 3, 2002
1 parent 7abb683 commit d9af917
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 3 deletions.
6 changes: 6 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
2002-08-03 Jakub Jelinek <jakub@redhat.com>
Ulrich Drepper <drepper@redhat.com>

* malloc/malloc.c (public_cALLOc): Only divide if at least one of
arguments is big enough to cause an overflow.

2002-08-03 Ulrich Drepper <drepper@redhat.com>

* assert/assert.c: Use hidden_def not INTDEF.
Expand Down
13 changes: 10 additions & 3 deletions malloc/malloc.c
Original file line number Diff line number Diff line change
Expand Up @@ -488,6 +488,9 @@ Void_t *(*__morecore)(ptrdiff_t) = __default_morecore;
#endif /* _LIBC */
#endif /* USE_DL_PREFIX */

#ifndef _LIBC
#define __builtin_expect(expr, val) (expr)
#endif

/*
HAVE_MEMCPY should be defined if you are not otherwise using
Expand Down Expand Up @@ -3466,9 +3469,13 @@ public_cALLOc(size_t n, size_t elem_size)

/* size_t is unsigned so the behavior on overflow is defined. */
bytes = n * elem_size;
if (bytes / elem_size != n) {
MALLOC_FAILURE_ACTION;
return 0;
#define HALF_INTERNAL_SIZE_T \
(((INTERNAL_SIZE_T) 1) << (8 * sizeof (INTERNAL_SIZE_T) / 2))
if (__builtin_expect ((n | elem_size) >= HALF_INTERNAL_SIZE_T, 0)) {
if (bytes / elem_size != n) {
MALLOC_FAILURE_ACTION;
return 0;
}
}

if (hook != NULL) {
Expand Down

0 comments on commit d9af917

Please sign in to comment.