summaryrefslogtreecommitdiffstats
path: root/source/lib/util.c
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2001-10-22 02:34:41 +0000
committerJeremy Allison <jra@samba.org>2001-10-22 02:34:41 +0000
commit2cc262278f9d4892cf2485d7a73d88bc0e7559a8 (patch)
tree14ff3abcace840a39bbde3ebd591d82554942399 /source/lib/util.c
parentb668d7d656cdd066820fb8044f24bcd4fda29524 (diff)
downloadsamba-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.
Diffstat (limited to 'source/lib/util.c')
-rw-r--r--source/lib/util.c28
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;
}