summaryrefslogtreecommitdiffstats
path: root/utils
diff options
context:
space:
mode:
authorPrasanna Kumar Kalever <prasanna.kalever@redhat.com>2017-02-08 13:19:01 +0530
committerPrasanna Kumar Kalever <prasanna.kalever@redhat.com>2017-02-08 14:05:28 +0530
commit6702716292058a507ff41df2880cc12154accced (patch)
tree36cc20cb0c0e1611d79889f139cb696e5e6cb0cd /utils
parent67fb77e759d6babaf5d8853b68241150bf10b6f7 (diff)
build: fix minor warnings
mostly uninitialized use of variables. check return values from function calls. Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
Diffstat (limited to 'utils')
-rw-r--r--utils/utils.c22
-rw-r--r--utils/utils.h17
2 files changed, 36 insertions, 3 deletions
diff --git a/utils/utils.c b/utils/utils.c
index a43a347..3441e54 100644
--- a/utils/utils.c
+++ b/utils/utils.c
@@ -145,6 +145,28 @@ gbAllocN(void *ptrptr, size_t size, size_t count,
}
+int
+gbReallocN(void *ptrptr, size_t size, size_t count,
+ const char *filename, const char *funcname, size_t linenr)
+{
+ void *tmp;
+
+
+ if (xalloc_oversized(count, size)) {
+ errno = ENOMEM;
+ return -1;
+ }
+ tmp = realloc(*(void**)ptrptr, size * count);
+ if (!tmp && (size * count)) {
+ errno = ENOMEM;
+ return -1;
+ }
+ *(void**)ptrptr = tmp;
+
+ return 0;
+}
+
+
void
gbFree(void *ptrptr)
{
diff --git a/utils/utils.h b/utils/utils.h
index f9763eb..2323418 100644
--- a/utils/utils.h
+++ b/utils/utils.h
@@ -16,6 +16,7 @@
# include <stdio.h>
# include <stdlib.h>
+# include <stddef.h>
# include <stdbool.h>
# include <string.h>
# include <errno.h>
@@ -122,13 +123,20 @@
# define CALLOC(x) \
calloc(1, x)
+# define GB_ALLOC(ptr) \
+ gbAlloc(&(ptr), sizeof(*(ptr)), \
+ __FILE__, __FUNCTION__, __LINE__)
+
# define GB_ALLOC_N(ptr, count) \
gbAllocN(&(ptr), sizeof(*(ptr)), (count), \
__FILE__, __FUNCTION__, __LINE__) \
-# define GB_ALLOC(ptr) \
- gbAlloc(&(ptr), sizeof(*(ptr)), \
- __FILE__, __FUNCTION__, __LINE__)
+# define xalloc_oversized(n, s) \
+ ((size_t) (sizeof(ptrdiff_t) <= sizeof(size_t) ? -1 : -2) / (s) < (n))
+
+# define GB_REALLOC_N(ptr, count) \
+ gbReallocN(&(ptr), sizeof(*(ptr)), (count), \
+ __FILE__, __FUNCTION__, __LINE__)
# define GB_STRDUP(dst, src) \
gbStrdup(&(dst), src, \
@@ -291,6 +299,9 @@ int gbAlloc(void *ptrptr, size_t size,
int gbAllocN(void *ptrptr, size_t size, size_t count,
const char *filename, const char *funcname, size_t linenr);
+int gbReallocN(void *ptrptr, size_t size, size_t count,
+ const char *filename, const char *funcname, size_t linenr);
+
int gbStrdup(char **dest, const char *src,
const char *filename, const char *funcname, size_t linenr);