X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=alloc.c;h=8e6a7e2623af006a7d6e8d7ca226934d130777cc;hb=1575d01044701d4f7978b4313f83d1942ead70f3;hp=2b29405d0bdb317eb9f92505067bb7cdf0e60d47;hpb=26b91e48d9297ef94e92d8501f12b1516096a940;p=debian%2Fsudo diff --git a/alloc.c b/alloc.c index 2b29405..8e6a7e2 100644 --- a/alloc.c +++ b/alloc.c @@ -1,5 +1,6 @@ /* - * Copyright (c) 1999-2003 Todd C. Miller + * Copyright (c) 1999-2005, 2007, 2010 + * Todd C. Miller * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -18,7 +19,7 @@ * Materiel Command, USAF, under agreement number F39502-99-1-0512. */ -#include "config.h" +#include #include #include @@ -33,26 +34,19 @@ #endif /* STDC_HEADERS */ #ifdef HAVE_STRING_H # include -#else -# ifdef HAVE_STRINGS_H -# include -# endif +#endif /* HAVE_STRING_H */ +#ifdef HAVE_STRINGS_H +# include #endif /* HAVE_STRING_H */ #if defined(HAVE_MALLOC_H) && !defined(STDC_HEADERS) # include #endif /* HAVE_MALLOC_H && !STDC_HEADERS */ -#ifdef HAVE_ERR_H -# include -#else -# include "emul/err.h" -#endif /* HAVE_ERR_H */ +#ifdef HAVE_INTTYPES_H +# include +#endif #include "sudo.h" -#ifndef lint -static const char rcsid[] = "$Sudo: alloc.c,v 1.23 2004/06/01 16:23:32 millert Exp $"; -#endif /* lint */ - /* * If there is no SIZE_MAX or SIZE_T_MAX we have to assume that size_t * could be signed (as it is on SunOS 4.x). This just means that @@ -71,17 +65,17 @@ static const char rcsid[] = "$Sudo: alloc.c,v 1.23 2004/06/01 16:23:32 millert E * emalloc() calls the system malloc(3) and exits with an error if * malloc(3) fails. */ -VOID * +void * emalloc(size) size_t size; { - VOID *ptr; + void *ptr; if (size == 0) - errx(1, "internal error, tried to emalloc(0)"); + errorx(1, "internal error, tried to emalloc(0)"); - if ((ptr = (VOID *) malloc(size)) == NULL) - errx(1, "unable to allocate memory"); + if ((ptr = malloc(size)) == NULL) + errorx(1, "unable to allocate memory"); return(ptr); } @@ -89,21 +83,21 @@ emalloc(size) * emalloc2() allocates nmemb * size bytes and exits with an error * if overflow would occur or if the system malloc(3) fails. */ -VOID * +void * emalloc2(nmemb, size) size_t nmemb; size_t size; { - VOID *ptr; + void *ptr; if (nmemb == 0 || size == 0) - errx(1, "internal error, tried to emalloc2(0)"); + errorx(1, "internal error, tried to emalloc2(0)"); if (nmemb > SIZE_MAX / size) - errx(1, "internal error, emalloc2() overflow"); + errorx(1, "internal error, emalloc2() overflow"); size *= nmemb; - if ((ptr = (VOID *) malloc(size)) == NULL) - errx(1, "unable to allocate memory"); + if ((ptr = malloc(size)) == NULL) + errorx(1, "unable to allocate memory"); return(ptr); } @@ -112,18 +106,18 @@ emalloc2(nmemb, size) * realloc(3) fails. You can call erealloc() with a NULL pointer even * if the system realloc(3) does not support this. */ -VOID * +void * erealloc(ptr, size) - VOID *ptr; + void *ptr; size_t size; { if (size == 0) - errx(1, "internal error, tried to erealloc(0)"); + errorx(1, "internal error, tried to erealloc(0)"); - ptr = ptr ? (VOID *) realloc(ptr, size) : (VOID *) malloc(size); + ptr = ptr ? realloc(ptr, size) : malloc(size); if (ptr == NULL) - errx(1, "unable to allocate memory"); + errorx(1, "unable to allocate memory"); return(ptr); } @@ -133,22 +127,22 @@ erealloc(ptr, size) * You can call erealloc() with a NULL pointer even if the system realloc(3) * does not support this. */ -VOID * +void * erealloc3(ptr, nmemb, size) - VOID *ptr; + void *ptr; size_t nmemb; size_t size; { if (nmemb == 0 || size == 0) - errx(1, "internal error, tried to erealloc3(0)"); + errorx(1, "internal error, tried to erealloc3(0)"); if (nmemb > SIZE_MAX / size) - errx(1, "internal error, erealloc3() overflow"); + errorx(1, "internal error, erealloc3() overflow"); size *= nmemb; - ptr = ptr ? (VOID *) realloc(ptr, size) : (VOID *) malloc(size); + ptr = ptr ? realloc(ptr, size) : malloc(size); if (ptr == NULL) - errx(1, "unable to allocate memory"); + errorx(1, "unable to allocate memory"); return(ptr); } @@ -179,7 +173,9 @@ int #ifdef __STDC__ easprintf(char **ret, const char *fmt, ...) #else -easprintf(va_alist) +easprintf(ret, fmt, va_alist) + char **ret; + const char *fmt; va_dcl #endif { @@ -188,18 +184,13 @@ easprintf(va_alist) #ifdef __STDC__ va_start(ap, fmt); #else - char **ret; - const char *fmt; - va_start(ap); - ret = va_arg(ap, char **); - fmt = va_arg(ap, const char *); #endif len = vasprintf(ret, fmt, ap); va_end(ap); if (len == -1) - errx(1, "unable to allocate memory"); + errorx(1, "unable to allocate memory"); return(len); } @@ -216,6 +207,17 @@ evasprintf(ret, format, args) int len; if ((len = vasprintf(ret, format, args)) == -1) - errx(1, "unable to allocate memory"); + errorx(1, "unable to allocate memory"); return(len); } + +/* + * Wrapper for free(3) so we can depend on C89 semantics. + */ +void +efree(ptr) + void *ptr; +{ + if (ptr != NULL) + free(ptr); +}