From be3fe77d7087b270576a43fe34cb3e0becd91a02 Mon Sep 17 00:00:00 2001 From: lnksz Date: Fri, 4 Sep 2020 12:05:21 +0200 Subject: [PATCH 1/2] asn_internal: Call va_end before returning I do not know the project's code-style, in some C projects this kind of error-handling would incorporate a goto. --- skeletons/asn_internal.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/skeletons/asn_internal.c b/skeletons/asn_internal.c index 91e537c48..07b1b03d5 100644 --- a/skeletons/asn_internal.c +++ b/skeletons/asn_internal.c @@ -17,6 +17,7 @@ asn__format_to_callback(int (*cb)(const void *, size_t, void *key), void *key, if(wrote < (ssize_t)buf_size) { if(wrote < 0) { if(buf != scratch) FREEMEM(buf); + va_end(args); return -1; } break; @@ -25,11 +26,15 @@ asn__format_to_callback(int (*cb)(const void *, size_t, void *key), void *key, buf_size <<= 1; if(buf == scratch) { buf = MALLOC(buf_size); - if(!buf) return -1; + if(!buf) { + va_end(args); + return -1; + } } else { void *p = REALLOC(buf, buf_size); if(!p) { FREEMEM(buf); + va_end(args); return -1; } buf = p; @@ -38,6 +43,7 @@ asn__format_to_callback(int (*cb)(const void *, size_t, void *key), void *key, cb_ret = cb(buf, wrote, key); if(buf != scratch) FREEMEM(buf); + va_end(args); if(cb_ret < 0) { return -1; } From 834b75aeb4596ca558130acc8ace21b3f3a7cdac Mon Sep 17 00:00:00 2001 From: lnksz Date: Fri, 4 Sep 2020 15:15:28 +0200 Subject: [PATCH 2/2] fixup! asn_internal: Call va_end before returning --- skeletons/asn_internal.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/skeletons/asn_internal.c b/skeletons/asn_internal.c index 07b1b03d5..06836b18f 100644 --- a/skeletons/asn_internal.c +++ b/skeletons/asn_internal.c @@ -20,6 +20,7 @@ asn__format_to_callback(int (*cb)(const void *, size_t, void *key), void *key, va_end(args); return -1; } + va_end(args); break; } @@ -43,7 +44,6 @@ asn__format_to_callback(int (*cb)(const void *, size_t, void *key), void *key, cb_ret = cb(buf, wrote, key); if(buf != scratch) FREEMEM(buf); - va_end(args); if(cb_ret < 0) { return -1; }