diff options
author | Jeremy Allison <jra@samba.org> | 2001-10-22 02:34:41 +0000 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2001-10-22 02:34:41 +0000 |
commit | 2cc262278f9d4892cf2485d7a73d88bc0e7559a8 (patch) | |
tree | 14ff3abcace840a39bbde3ebd591d82554942399 | |
parent | b668d7d656cdd066820fb8044f24bcd4fda29524 (diff) | |
download | samba-2cc262278f9d4892cf2485d7a73d88bc0e7559a8.tar.gz samba-2cc262278f9d4892cf2485d7a73d88bc0e7559a8.tar.xz samba-2cc262278f9d4892cf2485d7a73d88bc0e7559a8.zip |
Added xmalloc - calls smb_panic on zero size or malloc fail.
Added xmemdup - calls xmalloc.
Made data_blob() call xmemdup.
Defensive programming (I still hate the no error checking... :-).
Jeremy.
-rw-r--r-- | source/lib/util.c | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/source/lib/util.c b/source/lib/util.c index d3f07dd0a8c..cd170ff3d3e 100644 --- a/source/lib/util.c +++ b/source/lib/util.c @@ -1642,6 +1642,32 @@ int smb_mkstemp(char *template) } /***************************************************************** + malloc that aborts with smb_panic on fail or zero size. + *****************************************************************/ + +void *xmalloc(size_t size) +{ + void *p; + if (size == 0) + smb_panic("xmalloc called with zero size.\n"); + if ((p = malloc(size)) == NULL) + smb_panic("xmalloc malloc fail.\n"); + return p; +} + +/***************************************************************** + Memdup with smb_panic on fail. + *****************************************************************/ + +void *xmemdup(void *p, size_t size) +{ + void *p2; + p2 = xmalloc(size); + memcpy(p2, p, size); + return p2; +} + +/***************************************************************** like strdup but for memory *****************************************************************/ void *memdup(void *p, size_t size) @@ -1905,7 +1931,7 @@ DATA_BLOB data_blob(void *p, size_t length) return ret; } - ret.data = memdup(p, length); + ret.data = xmemdup(p, length); ret.length = length; return ret; } |