Commit 41cd41c4 authored by Martin Brejcha's avatar Martin Brejcha Committed by Dr. Stephen Henson
Browse files

Fix memory leak.



Fix memory leak by freeing up saved_message.data if it is not NULL.

PR#3489
Reviewed-by: default avatarStephen Henson <steve@openssl.org>
Reviewed-by: default avatarTim Hudson <tjh@openssl.org>
parent 3a83462d
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -1097,7 +1097,12 @@ static int dgram_sctp_free(BIO *a)
		return 0;

	data = (bio_dgram_sctp_data *)a->ptr;
	if(data != NULL) OPENSSL_free(data);
	if(data != NULL)
		{
		if(data->saved_message.data != NULL)
			OPENSSL_free(data->saved_message.data);
		OPENSSL_free(data);
		}

	return(1);
	}
@@ -1214,6 +1219,7 @@ static int dgram_sctp_read(BIO *b, char *out, int outl)
						dgram_sctp_write(data->saved_message.bio, data->saved_message.data,
						                 data->saved_message.length);
						OPENSSL_free(data->saved_message.data);
						data->saved_message.data = NULL;
						data->saved_message.length = 0;
						}

@@ -1385,9 +1391,11 @@ static int dgram_sctp_write(BIO *b, const char *in, int inl)
	if (data->save_shutdown && !BIO_dgram_sctp_wait_for_dry(b))
	{
		data->saved_message.bio = b;
		data->saved_message.length = inl;
		if (data->saved_message.data)
			OPENSSL_free(data->saved_message.data);
		data->saved_message.data = OPENSSL_malloc(inl);
		memcpy(data->saved_message.data, in, inl);
		data->saved_message.length = inl;
		return inl;
	}