summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorTed Unangst <tedu@cvs.openbsd.org>2015-10-14 21:12:11 +0000
committerTed Unangst <tedu@cvs.openbsd.org>2015-10-14 21:12:11 +0000
commitc28e98634b4cd38fa9c31804332972bdbc65e2b2 (patch)
treeffa0685a1864211f392cf9390747bc6b57667a4d /lib
parent191749e6cacbddf9c6169ec36db16a74ff3972da (diff)
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')
-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;