diff options
author | Neels Hofmeyr <neels@hofmeyr.de> | 2024-09-03 05:03:54 +0200 |
---|---|---|
committer | Neels Hofmeyr <neels@hofmeyr.de> | 2024-09-03 05:03:54 +0200 |
commit | 2ca240b0f895f1c6e902c51d6521ebae566c9e44 (patch) | |
tree | 6f18e87306850e7a562b83fa62ff2ffb7c9ef9df | |
parent | 7fbea1736663546e61294cfa796f6e3a6587227d (diff) |
coverity CID#300601 CID#215349neels/coverity
-rw-r--r-- | libasn1common/asn1_buffer.c | 2 | ||||
-rw-r--r-- | skeletons/asn_internal.c | 8 |
2 files changed, 8 insertions, 2 deletions
diff --git a/libasn1common/asn1_buffer.c b/libasn1common/asn1_buffer.c index cd67b815..3104a4dd 100644 --- a/libasn1common/asn1_buffer.c +++ b/libasn1common/asn1_buffer.c @@ -164,7 +164,7 @@ vasprintf(char **ret, const char *fmt, va_list args) { *ret = NULL; assert(suggested >= 0); /* Can't function like this */ } - va_end(args); + va_end(copy); return actual_length; } diff --git a/skeletons/asn_internal.c b/skeletons/asn_internal.c index 91e537c4..8469c7bb 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,15 +26,20 @@ 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) { + va_end(args); FREEMEM(buf); return -1; } buf = p; } + va_end(args); } while(1); cb_ret = cb(buf, wrote, key); |