]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
utils: provide array allocation wrapper
authorOleksandr Natalenko <oleksandr@natalenko.name>
Mon, 2 Jan 2017 19:54:08 +0000 (20:54 +0100)
committerFlorian Westphal <fw@strlen.de>
Tue, 3 Jan 2017 01:42:14 +0000 (02:42 +0100)
This will be used for allocating memory for arrays
in heap instead of keeping them on stack.

Signed-off-by: Oleksandr Natalenko <oleksandr@natalenko.name>
Signed-off-by: Florian Westphal <fw@strlen.de>
include/utils.h
src/utils.c

index bb58ba424165c80b2e9eb83d82ea392b338f4c0a..3199388a3ab20e66052856447c7aa02b42245251 100644 (file)
@@ -138,6 +138,7 @@ extern void __memory_allocation_error(const char *filename, uint32_t line) __nor
 
 extern void xfree(const void *ptr);
 extern void *xmalloc(size_t size);
+extern void *xmalloc_array(size_t nmemb, size_t size);
 extern void *xrealloc(void *ptr, size_t size);
 extern void *xzalloc(size_t size);
 extern char *xstrdup(const char *s);
index 65dabf41ab18b916736176bef44414e7b33f923d..47f5b791547b1c6272df16b56aab64eff1cee33d 100644 (file)
@@ -39,6 +39,17 @@ void *xmalloc(size_t size)
        return ptr;
 }
 
+void *xmalloc_array(size_t nmemb, size_t size)
+{
+       assert(size != 0);
+       assert(nmemb != 0);
+
+       if (nmemb > SIZE_MAX / size)
+               memory_allocation_error();
+
+       return xmalloc(nmemb * size);
+}
+
 void *xrealloc(void *ptr, size_t size)
 {
        ptr = realloc(ptr, size);