summaryrefslogtreecommitdiffstats
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:24:59 +0100
commitd54475538972b3d7d75d0b105cc98163164f4ce0 (patch)
treeafa384ec0134f3e457c3f11511bea8369e6dbe52 /crypto/bio
parent88398e9ba36a7b3d82ae8d3960312732e05ec2e5 (diff)
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 a172840722..d9967e7272 100644
--- a/crypto/bio/bss_dgram.c
+++ b/crypto/bio/bss_dgram.c
@@ -1333,7 +1333,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;
@@ -1388,6 +1388,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__
@@ -1400,6 +1405,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 */