From: Phil Sutter <psut...@redhat.com>

Apart from being a bad idea in general, the return statement contained
in that macro in some cases leads to returning from functions without
properly cleaning up, thereby causing memory leaks.

Instead, just sanitize the value in 'ret' to not harm further calls of
snprintf() (as 'len' will eventually just become zero).

Cc: Arturo Borrero <arturo.borrero.g...@gmail.com>
Signed-off-by: Phil Sutter <p...@nwl.cc>
---
This is actually v2 of "[libnftnl PATCH 2/7] ruleset: Prevent memleak in
nftnl_ruleset_snprintf_*() functions" but since it's a completely
different approach there was no use in keeping the old subject line.
---
 include/utils.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/utils.h b/include/utils.h
index 21694b6ab1912..924df324aa603 100644
--- a/include/utils.h
+++ b/include/utils.h
@@ -54,7 +54,7 @@ void __nftnl_assert_attr_exists(uint16_t attr, uint16_t 
attr_max,
 
 #define SNPRINTF_BUFFER_SIZE(ret, size, len, offset)   \
        if (ret < 0)                                    \
-               return ret;                             \
+               ret = 0;                                \
        offset += ret;                                  \
        if (ret > len)                                  \
                ret = len;                              \
-- 
2.8.2

--
To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to