aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/wsbm_manager.c13
-rw-r--r--src/wsbm_slabpool.c4
2 files changed, 12 insertions, 5 deletions
diff --git a/src/wsbm_manager.c b/src/wsbm_manager.c
index 0cbf9de..877abc6 100644
--- a/src/wsbm_manager.c
+++ b/src/wsbm_manager.c
@@ -1015,15 +1015,18 @@ wsbmBOCreateList(int target, int hasKernelBuffers)
return NULL;
list->hasKernelBuffers = hasKernelBuffers;
if (hasKernelBuffers) {
- ret = validateCreateList(target, &list->kernelBuffers, 0);
- if (ret)
- return NULL;
+ ret = validateCreateList(target, &list->kernelBuffers, 0);
+ if (ret) {
+ free(list);
+ return NULL;
+ }
}
ret = validateCreateList(target, &list->userBuffers, 1);
if (ret) {
- validateFreeList(&list->kernelBuffers);
- return NULL;
+ validateFreeList(&list->kernelBuffers);
+ free(list);
+ return NULL;
}
return list;
diff --git a/src/wsbm_slabpool.c b/src/wsbm_slabpool.c
index ec6638b..1e551e3 100644
--- a/src/wsbm_slabpool.c
+++ b/src/wsbm_slabpool.c
@@ -463,6 +463,10 @@ wsbmAllocSlab(struct _WsbmSlabSizeHeader *header)
}
numBuffers = slab->kbo->actualSize / header->bufSize;
+ if (!numBuffers) {
+ ret = -ENOMEM;
+ goto out_err1;
+ }
slab->buffers = calloc(numBuffers, sizeof(*slab->buffers));
if (!slab->buffers) {