From 97c26c1924b076ef23ebe4381558e8aa025712b2 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 16:54:37 +0200 Subject: Adding upstream version 1:4.13+dfsg1. Signed-off-by: Daniel Baumann --- libmisc/xmalloc.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 libmisc/xmalloc.c (limited to 'libmisc/xmalloc.c') diff --git a/libmisc/xmalloc.c b/libmisc/xmalloc.c new file mode 100644 index 0000000..056d472 --- /dev/null +++ b/libmisc/xmalloc.c @@ -0,0 +1,46 @@ +/* + * SPDX-FileCopyrightText: 1990 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1998, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2006, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2008 , Nicolas François + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +/* Replacements for malloc and strdup with error checking. Too trivial + to be worth copyrighting :-). I did that because a lot of code used + malloc and strdup without checking for NULL pointer, and I like some + message better than a core dump... --marekm + + Yeh, but. Remember that bailing out might leave the system in some + bizarre state. You really want to put in error checking, then add + some back-out failure recovery code. -- jfh */ + +#include + +#ident "$Id$" + +#include +#include +#include "defines.h" +#include "prototypes.h" +#include "shadowlog.h" + +/*@maynotreturn@*/ /*@only@*//*@out@*//*@notnull@*/void *xmalloc (size_t size) +{ + void *ptr; + + ptr = malloc (size); + if (NULL == ptr) { + (void) fprintf (log_get_logfd(), + _("%s: failed to allocate memory: %s\n"), + log_get_progname(), strerror (errno)); + exit (13); + } + return ptr; +} + +/*@maynotreturn@*/ /*@only@*//*@notnull@*/char *xstrdup (const char *str) +{ + return strcpy (xmalloc (strlen (str) + 1), str); +} -- cgit v1.2.3