aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeels Hofmeyr <neels@hofmeyr.de>2024-09-03 05:03:54 +0200
committerNeels Hofmeyr <neels@hofmeyr.de>2024-09-03 05:03:54 +0200
commit2ca240b0f895f1c6e902c51d6521ebae566c9e44 (patch)
tree6f18e87306850e7a562b83fa62ff2ffb7c9ef9df
parent7fbea1736663546e61294cfa796f6e3a6587227d (diff)
coverity CID#300601 CID#215349neels/coverity
-rw-r--r--libasn1common/asn1_buffer.c2
-rw-r--r--skeletons/asn_internal.c8
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);