summaryrefslogtreecommitdiff
path: root/lib/libssl/ssl_ciph.c
diff options
context:
space:
mode:
authorMiod Vallat <miod@cvs.openbsd.org>2014-06-18 04:48:38 +0000
committerMiod Vallat <miod@cvs.openbsd.org>2014-06-18 04:48:38 +0000
commitcbce60998e4c71f3e68292c82792422a8a227cc3 (patch)
tree8834e5a07b585844bfd8231d4f094a0ca89c7cfe /lib/libssl/ssl_ciph.c
parent9cd22f5bd3070c82074af48185fe8b3144c69ac2 (diff)
Use asprintf() instead of a fixed 128-byte size in SSL_CIPHER_description()
when no storage buffer is passed. ok deraadt@ tedu@
Diffstat (limited to 'lib/libssl/ssl_ciph.c')
-rw-r--r--lib/libssl/ssl_ciph.c22
1 files changed, 11 insertions, 11 deletions
diff --git a/lib/libssl/ssl_ciph.c b/lib/libssl/ssl_ciph.c
index d491a0cab6d..b8a6eaf5143 100644
--- a/lib/libssl/ssl_ciph.c
+++ b/lib/libssl/ssl_ciph.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ssl_ciph.c,v 1.54 2014/06/18 04:47:32 miod Exp $ */
+/* $OpenBSD: ssl_ciph.c,v 1.55 2014/06/18 04:48:37 miod Exp $ */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
@@ -1909,16 +1909,16 @@ SSL_CIPHER_description(const SSL_CIPHER *cipher, char *buf, int len)
break;
}
- if (buf == NULL) {
- len = 128;
- buf = malloc(len);
- if (buf == NULL)
- return("malloc Error");
- } else if (len < 128)
- return("Buffer too small");
-
- l = snprintf(buf, len, format, cipher->name, ver, kx, au, enc, mac, exp_str);
- if (l >= len || l == -1)
+ if (buf == NULL)
+ l = asprintf(&buf, format, cipher->name, ver, kx, au, enc,
+ mac, exp_str);
+ else {
+ l = snprintf(buf, len, format, cipher->name, ver, kx, au, enc,
+ mac, exp_str);
+ if (l >= len)
+ l = -1;
+ }
+ if (l == -1)
return("Buffer too small");
else
return (buf);