Corinna Vinschen
aa106b29a6
malloc/nano-malloc: correctly check for out-of-bounds allocation reqs
...
The overflow check in mEMALIGn erroneously checks for INT_MAX,
albeit the input parameter is size_t. Fix this to check for
__SIZE_MAX__ instead. Also, it misses to check the req against
adding the alignment before calling mALLOc.
While at it, add out-of-bounds checks to pvALLOc, nano_memalign,
nano_valloc, and Cygwin's (unused) dlpvalloc.
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2020-11-17 10:52:34 +01:00
Keith Packard via Newlib
588a5e1dde
libc/stdlib: Use __builtin_mul_overflow for reallocarray and calloc
...
This built-in function (available in both gcc and clang) is more
efficient and generates shorter code than open-coding the test.
Signed-off-by: Keith Packard <keithp@keithp.com>
2020-08-12 10:09:56 +02:00
Jeff Johnston
4a3d0a5a5d
Fix issue with malloc_extend_top
...
- when calculating a correction to align next brk to page boundary,
ensure that the correction is less than a page size
- if allocating the correction fails, ensure that the top size is
set to brk + sbrk_size (minus any front alignment made)
Signed-off-by: Jeff Johnston <jjohnstn@redhat.com>
2018-05-29 10:16:48 -04:00
Jeff Johnston
4f5feab5ea
2010-05-31 Kazu Hirata <kazu@codesourcery.com>
...
* libc/stdlib/mallocr.c (malloc_extend_top): Backport the
difference between versions 2.6.4 and 2.6.5.
2010-05-31 19:15:41 +00:00
Jeff Johnston
6c249577fb
2009-09-28 Michael Eager <eager@eagercon.com>
...
* configure.host: Add microblaze.
* libc/include/machine/ieeefp.h [MICROBLAZE]: Define __IEEE_BIG_ENDIAN.
* libc/include/machine/setjmp.h [MICROBLAZE]: Define _JBLEN, _JBTYPE.
* libc/include/sys/config.h [MICROBLAZE]: Define _REENT_SMALL,
_UNIX98_THREAD_MUTEX_ATTRIBUTES.
* libc/include/sys/types.h: Treat XMK like rtems, define
PTHREAD_MUTEX_NORMAL, PTHREAD_MUTEX_ERRORCHECK, PTHREAD_MUTEX_RECURSIVE,
PTHREAD_MUTEX_DEFAULT, PTHREAD_STACK_MIN, define stuct pthread_attr_s.
* libc/machine/configure.in: Add microblaze.
* libc/machine/configure: Add microblaze (not regenerated).
* libc/machine/microblaze/configure.in: NEW.
* libc/machine/microblaze/configure: Generate.
* libc/machine/microblaze/Makefile.am: NEW.
* libc/machine/microblaze/Makefile.in: Generate.
* libc/machine/microblaze/{abort.c, strcmp.c, strcpy.c, strlen.c,
mallocr.c, longjmp.S, setjmp.S}: NEW.
* libc/stdlib/mallocr.c [MICROBLAZE]: Don't declare sbrk prototype,
mALLOc(): return malloc value.
2009-09-28 16:42:21 +00:00
Jeff Johnston
f522256075
2006-12-18 Jeff Johnston <jjohnstn@redhat.com>
...
* libc/stdlib/mallocr.c (malloc_extend_top): Add patch from
2.6.5 version of Doug Lea's malloc which is the basis of
this code.
2006-12-18 20:21:48 +00:00
Jeff Johnston
f011605a90
2005-10-07 Bob Wilson <bob.wilson@acm.org>
...
* libc/stdlib/mallocr.c (mALLOc, rEALLOCc, mEMALIGn): Set errno
to ENOMEM on failure.
2005-10-07 18:07:26 +00:00
Jeff Johnston
15c04fd16e
2005-06-03 Jeff Johnston <jjohnstn@redhat.com>
...
* libc/stdlib/mallocr.c (MALLOC_COPY): Switch to use memmove
instead of memcpy.
2005-06-03 18:57:30 +00:00
Jeff Johnston
1159e0fd94
2005-02-07 Antony King <antony.king@st.com>
...
* libc/stdio/clearerr.c (clearerr): Ensure CHECK_INIT() is
called before _flockfile to prevent lock object use before
initialisation. _REENT_SMALL_CHECK_INIT() and CHECK_INIT()
take a struct _reent * instead of a FILE *.
* libc/stdio/fclose.c (_fclose_r): Ditto.
* libc/stdio/feof.c (feof): Ditto.
* libc/stdio/ferror.c (ferror): Ditto.
* libc/stdio/fflush.c (fflush): Ditto.
* libc/stdio/fgetc.c (fgetc): Ditto.
* libc/stdio/fgets.c (fgets): Ditto.
* libc/stdio/fileno.c (fileno): Ditto.
* libc/stdio/fputc.c (fputc): Ditto.
* libc/stdio/fputs.c (fputs): Ditto.
* libc/stdio/fread.c (fread): Ditto.
* libc/stdio/freopen.c (_freopen_r): Ditto.
* libc/stdio/fseek.c (_fseek_r): Ditto.
* libc/stdio/ftell.c (_ftell_r): Ditto.
* libc/stdio/fwrite.c (fwrite): Ditto.
* libc/stdio/getc.c (getc): Ditto.
* libc/stdio/getdelim.c (__getdelim): Ditto.
* libc/stdio/putc.c (putc): Ditto.
* libc/stdio/setvbuf.c (setvbuf): Ditto.
* libc/stdio/ungetc.c (_ungetc_r): Ditto.
* libc/stdio/vfprintf.c (_VFPRINTF_R): Ditto.
* libc/stdio64/freopen64.c (_freopen64_r): Ditto.
* libc/stdio64/fseeko64.c (_fseeko64_r): Ditto.
* libc/stdio64/ftello64.c (_ftello64_r): Ditto.
* libc/stdio/local.h (CHECK_INIT): Argument is now a struct
_reent * instead of a FILE * and so replace incorrect use of
_REENT with argument.
* libc/sys/arm/syscalls.c (CHECK_INIT): Ditto.
* libc/stdio/getchar.c (getchar): _REENT_SMALL_CHECK_INIT() and
CHECK_INIT() take a struct _reent * instead of a FILE *.
* libc/stdio/iprintf.c (iprintf, _iprintf_r): Ditto.
* libc/stdio/iscanf.c (iscanf, _iscanf_r): Ditto.
* libc/stdio/perror.c (perror): Ditto.
* libc/stdio/printf.c (printf, _printf_r): Ditto.
* libc/stdio/putchar.c (putchar): Ditto.
* libc/stdio/puts.c (puts): Ditto.
* libc/stdio/refill.c (__srefill): Ditto.
* libc/stdio/scanf.c (scanf, _scanf_r): Ditto.
* libc/stdio/vfscanf.c (VFSCANF, _VFSCANF_R): Ditto.
* libc/stdio/viprintf.c (viprintf, _viprintf_r): Ditto.
* libc/stdio/viscanf.c (viscanf, _viscanf_r): Ditto.
* libc/stdio/vprintf.c (vprintf, _vprintf_r): Ditto.
* libc/stdio/vscanf.c (vscanf, _vscanf_r): Ditto.
* libc/stdio/wbuf.c (__swbuf): Ditto.
* libc/stdio/wsetup.c (__swsetup): Ditto.
* libc/stdlib/mallocr.c (malloc_stats): Ditto.
* libc/stdlib/mstats.c (_mstats_r): Ditto.
* libc/include/sys/reent.h (_REENT_SMALL_CHECK_INIT): Ditto.
* libc/machine/powerpc/vfscanf.c (vfscanf): Ditto.
* libc/stdio/fgetpos.c (_fgetpos_r): Removed unnecessary calls
to _flockfile and _funlockfile; rely on locking in _ftell_r.
* libc/stdio64/fgetpos64.c (_fgetpos64_r): Ditto (_ftello64_r).
* libc/machine/powerpc/vfprintf.c (__sbprintf): Removed unnecessary
initialision of _data field in FILE structure.
* libc/machine/powerpc/vfprintf.c (VFPRINTF): Added CHECK_INIT() call.
2005-02-08 01:33:19 +00:00
Jeff Johnston
8f0211142c
2003-08-19 Jeff Johnston <jjohnstn@redhat.com>
...
* libc/stdlib/mallocr.c (mALLOc, rEALLOc, mEMEALIGn): Enhance
overflow detection.
2003-08-19 18:09:54 +00:00
Jeff Johnston
12ee7037a3
2003-02-19 Jeff Johnston <jjohnstn@redhat.com>
...
* libc/stdlib/mallocr.c (unlink): Revert 02/18 fix.
2003-02-19 19:00:11 +00:00
Jeff Johnston
b1ca765e84
2003-02-18 Earnie Boyd <earnie@users.sf.net>
...
* libc/stdlib/mallocr.c (unlink): Don't assign a value to a pointer
with a NULL value.
2003-02-18 22:34:02 +00:00
Richard Sandiford
f770cf44c3
* libc/include/sys/config.h (SIZE_T_SMALLER_THAN_LONG): Undefine.
...
* libc/stdlib/mallocr.c (long_sub_size_t): Define in a way that
doesn't require the SIZE_T_SMALLER_THAN_LONG macro.
2002-10-11 10:28:30 +00:00
Jeff Johnston
fe47ea33a9
2002-08-20 Casper S. Hornstrup <chorns@users.sourceforge.net>
...
* libc/stdlib/mallocr.c: #include windows.h on Win32.
(AlignPage): Continue macro on next line.
2002-08-20 15:29:30 +00:00
Jeff Johnston
659e70628e
2002-08-09 Jason Tishler <jason@tishler.net>
...
* libc/stdlib/mallocr.c: Include <limits.h>.
(request2size): Change macro to do
unsigned long comparisons and avoid signed overflow.
(mALLOc): Add overflow check for the number of bytes to allocate.
(rEALLOc): Ditto.
2002-08-09 21:33:29 +00:00
Alexandre Oliva
2f3009bd13
* libc/stdlib/mallocr.c (malloc_extend_top): If correction sbrk
...
fails, don't bail out, and try to correct next time.
2002-04-13 10:27:02 +00:00
Matthew Green
8195aff714
* implement a new `struct _reent' that is significantly smaller. use this
...
if _REENT_SMALL is defined in config.h. define this for xstormy16.
2002-02-03 09:24:18 +00:00
Jeff Johnston
e826766445
2001-08-21 Jeff Johnston <jjohnstn@redhat.com>
...
* libc/stdlib/mallocr.c [!defined(MALLOC_ALIGNMENT)]: Add conditional
for SIZE_SZ so that alignment ends up a minimum of 8.
2001-08-21 20:23:16 +00:00
Christopher Faylor
82ea92f3ea
* libc/stdlib/mallocr.c: Undefine windows preprocessor variables when compiling
...
under Cygwin.
2001-01-30 04:04:59 +00:00
Christopher Faylor
a385ae7508
* Makefile.am: Fix space vs. tab problem in install-data-local.
...
* Makefile.in: Regenerate.
* libc/include/_ansi.h (_EXFUN): Define specially for __CYGWIN__.
(_EXPARM): New macro for defining a function parameter.
* libc/include/stdlib.h: Use _EXPARM.
* libc/stdlib/mallocr.c: Don't build cfree for Cygwin.
2000-09-06 20:46:27 +00:00
Christopher Faylor
8a0efa53e4
import newlib-2000-02-17 snapshot
2000-02-17 19:39:52 +00:00