libnftables kills the process on out of memory (xmalloc()), so when we use libraries that propagate ENOMEM to libnftables, we also abort the process. For example: nlr = nftnl_rule_alloc(); if (!nlr) memory_allocation_error(); Add memory_allocation_check() macro which can simplify this common check to: nlr = memory_allocation_check(nftnl_rule_alloc()); Signed-off-by: Thomas Haller <thaller@xxxxxxxxxx> --- include/utils.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/include/utils.h b/include/utils.h index 36a28f893667..fcd7c598fe9f 100644 --- a/include/utils.h +++ b/include/utils.h @@ -142,6 +142,16 @@ extern void __memory_allocation_error(const char *filename, uint32_t line) __nor #define memory_allocation_error() \ __memory_allocation_error(__FILE__, __LINE__); +#define memory_allocation_check(cmd) \ + ({ \ + typeof((cmd)) _v = (cmd); \ + const void *const _v2 = _v; \ + \ + if (!_v2) \ + memory_allocation_error(); \ + _v; \ + }) + extern void xfree(const void *ptr); extern void *xmalloc(size_t size); extern void *xmalloc_array(size_t nmemb, size_t size); -- 2.41.0