summaryrefslogtreecommitdiffstats
path: root/lib/libcrypto/objects/obj_dat.c
diff options
context:
space:
mode:
authortedu <tedu@openbsd.org>2015-10-14 21:12:10 +0000
committertedu <tedu@openbsd.org>2015-10-14 21:12:10 +0000
commit32b457e2f5c9818209be85ffef4ccf3a231cad78 (patch)
treed2b1aaabfb6af7c373ec9e49393b0b104db68c7b /lib/libcrypto/objects/obj_dat.c
parentremove a handful of log_warn that we should handle at a different place to (diff)
downloadwireguard-openbsd-32b457e2f5c9818209be85ffef4ccf3a231cad78.tar.xz
wireguard-openbsd-32b457e2f5c9818209be85ffef4ccf3a231cad78.zip
fix a memory leak reported by Qualys Security.
move the bndec variable in tighter since it's not used elsewhere in the loop, then always free it after use. ok bcook miod
Diffstat (limited to 'lib/libcrypto/objects/obj_dat.c')
-rw-r--r--lib/libcrypto/objects/obj_dat.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/lib/libcrypto/objects/obj_dat.c b/lib/libcrypto/objects/obj_dat.c
index 82ebb9b1d20..dab860d85c0 100644
--- a/lib/libcrypto/objects/obj_dat.c
+++ b/lib/libcrypto/objects/obj_dat.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: obj_dat.c,v 1.32 2015/10/14 21:02:08 beck Exp $ */
+/* $OpenBSD: obj_dat.c,v 1.33 2015/10/14 21:12:10 tedu Exp $ */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
@@ -491,7 +491,6 @@ OBJ_obj2txt(char *buf, int buf_len, const ASN1_OBJECT *a, int no_name)
{
int i, ret = 0, len, nid, first = 1, use_bn;
BIGNUM *bl = NULL;
- char *bndec = NULL;
unsigned long l;
const unsigned char *p;
@@ -567,10 +566,13 @@ OBJ_obj2txt(char *buf, int buf_len, const ASN1_OBJECT *a, int no_name)
}
if (use_bn) {
+ char *bndec;
+
bndec = BN_bn2dec(bl);
if (!bndec)
goto err;
i = snprintf(buf, buf_len, ".%s", bndec);
+ free(bndec);
if (i == -1)
goto err;
if (i >= buf_len) {
@@ -598,7 +600,6 @@ OBJ_obj2txt(char *buf, int buf_len, const ASN1_OBJECT *a, int no_name)
}
out:
- free(bndec);
BN_free(bl);
return ret;