Commit 3b3ecce1 authored by Kurt Roeckx's avatar Kurt Roeckx Committed by Matt Caswell
Browse files

Set authkey to NULL and check malloc return value.

parent 00f3a236
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -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 */