aboutsummaryrefslogtreecommitdiffstats
path: root/crypto/bio
diff options
context:
space:
mode:
authorKurt Roeckx <kurt@roeckx.be>2014-05-01 13:10:01 +0200
committerMatt Caswell <matt@openssl.org>2014-05-12 00:20:08 +0100
commit3b3ecce14197e00a99244fe73802d3ed89ef242a (patch)
tree1a9093a3bad316b656756f206c1fe014e1b1b6f7 /crypto/bio
parent00f3a236e0d6aec991377d7f65015e6deeecdcb1 (diff)
downloadopenssl-3b3ecce14197e00a99244fe73802d3ed89ef242a.tar.gz
Set authkey to NULL and check malloc return value.
Diffstat (limited to 'crypto/bio')
-rw-r--r--crypto/bio/bss_dgram.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/crypto/bio/bss_dgram.c b/crypto/bio/bss_dgram.c
index 3b21bf04c4..9c0950191b 100644
--- a/crypto/bio/bss_dgram.c
+++ b/crypto/bio/bss_dgram.c
@@ -1381,7 +1381,7 @@ static long dgram_sctp_ctrl(BIO *b, int cmd, long num, void *ptr)
bio_dgram_sctp_data *data = NULL;
socklen_t sockopt_len = 0;
struct sctp_authkeyid authkeyid;
- struct sctp_authkey *authkey;
+ struct sctp_authkey *authkey = NULL;
data = (bio_dgram_sctp_data *)b->ptr;
@@ -1436,6 +1436,11 @@ static long dgram_sctp_ctrl(BIO *b, int cmd, long num, void *ptr)
/* Add new key */
sockopt_len = sizeof(struct sctp_authkey) + 64 * sizeof(uint8_t);
authkey = OPENSSL_malloc(sockopt_len);
+ if (authkey == NULL)
+ {
+ ret = -1;
+ break;
+ }
memset(authkey, 0x00, sockopt_len);
authkey->sca_keynumber = authkeyid.scact_keynumber + 1;
#ifndef __FreeBSD__
@@ -1448,6 +1453,7 @@ static long dgram_sctp_ctrl(BIO *b, int cmd, long num, void *ptr)
ret = setsockopt(b->num, IPPROTO_SCTP, SCTP_AUTH_KEY, authkey, sockopt_len);
OPENSSL_free(authkey);
+ authkey = NULL;
if (ret < 0) break;
/* Reset active key */