mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-09-03 08:05:21 +00:00
Abort on memory allocation failure
This commit is contained in:
@@ -14,6 +14,7 @@
|
|||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
|
#include <errno.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@@ -712,10 +713,32 @@ mem_putstats(isc__mem_t *ctx, void *ptr, size_t size) {
|
|||||||
|
|
||||||
static void *
|
static void *
|
||||||
default_memalloc(void *arg, size_t size) {
|
default_memalloc(void *arg, size_t size) {
|
||||||
|
void *ptr;
|
||||||
UNUSED(arg);
|
UNUSED(arg);
|
||||||
if (size == 0U)
|
|
||||||
size = 1;
|
ptr = malloc(size);
|
||||||
return (malloc(size));
|
|
||||||
|
/*
|
||||||
|
* If the space cannot be allocated, a null pointer is returned. If the
|
||||||
|
* size of the space requested is zero, the behavior is
|
||||||
|
* implementation-defined: either a null pointer is returned, or the
|
||||||
|
* behavior is as if the size were some nonzero value, except that the
|
||||||
|
* returned pointer shall not be used to access an object.
|
||||||
|
* [ISO9899 § 7.22.3]
|
||||||
|
*
|
||||||
|
* [ISO9899]
|
||||||
|
* ISO/IEC WG 9899:2011: Programming languages - C.
|
||||||
|
* International Organization for Standardization, Geneva, Switzerland.
|
||||||
|
* http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1570.pdf
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (ptr == NULL && size != 0) {
|
||||||
|
char strbuf[ISC_STRERRORSIZE];
|
||||||
|
strerror_r(errno, strbuf, sizeof(strbuf));
|
||||||
|
isc_error_fatal(__FILE__, __LINE__, "malloc failed: %s", strbuf);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
Reference in New Issue
Block a user