d2a472
--- a/libcap/cap_alloc.c	2021-02-05 06:52:17.000000000 +0100
d2a472
+++ b/libcap/cap_alloc.c	2022-05-17 20:06:53.570560396 +0200
d2a472
@@ -123,6 +123,10 @@
d2a472
 
d2a472
 cap_iab_t cap_iab_init(void) {
d2a472
     __u32 *base = calloc(1, sizeof(__u32) + sizeof(struct cap_iab_s));
d2a472
+    if (base == NULL) {
d2a472
+	_cap_debug("out of memory");
d2a472
+	return NULL;
d2a472
+    }
d2a472
     *(base++) = CAP_IAB_MAGIC;
d2a472
     return (cap_iab_t) base;
d2a472
 }
d2a472
@@ -138,6 +142,10 @@
d2a472
 			      const char * const *envp)
d2a472
 {
d2a472
     __u32 *data = calloc(1, sizeof(__u32) + sizeof(struct cap_launch_s));
d2a472
+    if (data == NULL) {
d2a472
+	_cap_debug("out of memory");
d2a472
+	return NULL;
d2a472
+    }
d2a472
     *(data++) = CAP_LAUNCH_MAGIC;
d2a472
     struct cap_launch_s *attr = (struct cap_launch_s *) data;
d2a472
     attr->arg0 = arg0;
d2a472
--- a/libcap/cap_proc.c	2022-05-17 20:07:36.301803359 +0200
d2a472
+++ b/libcap/cap_proc.c	2022-05-17 20:06:59.238592623 +0200
d2a472
@@ -677,9 +677,25 @@
d2a472
  */
d2a472
 cap_iab_t cap_iab_get_proc(void)
d2a472
 {
d2a472
-    cap_iab_t iab = cap_iab_init();
d2a472
-    cap_t current = cap_get_proc();
d2a472
+    cap_iab_t iab;
d2a472
+    cap_t current;
d2a472
+
d2a472
+    iab = cap_iab_init();
d2a472
+    if (iab == NULL) {
d2a472
+	_cap_debug("no memory for IAB tuple");
d2a472
+	return NULL;
d2a472
+    }
d2a472
+
d2a472
+    current = cap_get_proc();
d2a472
+    if (current == NULL) {
d2a472
+	_cap_debug("no memory for cap_t");
d2a472
+	cap_free(iab);
d2a472
+	return NULL;
d2a472
+    }
d2a472
+
d2a472
     cap_iab_fill(iab, CAP_IAB_INH, current, CAP_INHERITABLE);
d2a472
+    cap_free(current);
d2a472
+
d2a472
     cap_value_t c;
d2a472
     for (c = cap_max_bits(); c; ) {
d2a472
 	--c;