]> andersk Git - openssh.git/blobdiff - xmalloc.c
- djm@cvs.openbsd.org 2006/03/25 00:05:41
[openssh.git] / xmalloc.c
index 64e439853e0206859abe5fae5510c76744b236f4..6d56781d921925df514608aacad1db30f9824a9b 100644 (file)
--- a/xmalloc.c
+++ b/xmalloc.c
@@ -30,6 +30,22 @@ xmalloc(size_t size)
        return ptr;
 }
 
+void *
+xcalloc(size_t nmemb, size_t size)
+{
+       void *ptr;
+
+        if (nmemb && size && SIZE_T_MAX / nmemb < size)
+               fatal("xcalloc: nmemb * size > SIZE_T_MAX");
+       if (size == 0 || nmemb == 0)
+               fatal("xcalloc: zero size");
+       ptr = calloc(nmemb, size);
+       if (ptr == NULL)
+               fatal("xcalloc: out of memory (allocating %lu bytes)",
+                   (u_long)(size * nmemb));
+       return ptr;
+}
+
 void *
 xrealloc(void *ptr, size_t new_size)
 {
@@ -65,3 +81,19 @@ xstrdup(const char *str)
        strlcpy(cp, str, len);
        return cp;
 }
+
+int
+xasprintf(char **ret, const char *fmt, ...)
+{
+       va_list ap;
+       int i;
+
+       va_start(ap, fmt);
+       i = vasprintf(ret, fmt, ap);
+       va_end(ap);
+
+       if (i < 0 || *ret == NULL)
+               fatal("xasprintf: could not allocate memory");
+
+       return (i);
+}
This page took 0.102868 seconds and 4 git commands to generate.