[openssl-dev] [openssl.org #4111] [PATCH] fix ssl3_free NULL dereference on out of memory condition
Willy TARREAU via RT
rt at openssl.org
Wed Oct 28 00:58:09 UTC 2015
This patch fixes a NULL dereference issue when SSL_new() fails due to a
low memory condition. Here it is possible that ssl3_new() fails, but
despite this ssl3_free() is called along the error path and doesn't check
that s->s3 is valid before dereferencing it. The first victim here is
ssl3_cleanup_key_block() but it can happen a few lines earlier depending
on the #ifdef.
Since ssl3_free() already used to check for the validity of its SSL
pointer argument, let's make it also check for s->s3 which it works on,
and make it ignore a NULL there.
The error was repeatedly encountered on openssl 1.0.1p. Tests with newer
versions were not made yet.
Backtrace below :
Program terminated with signal 11, Segmentation fault.
#0 0x000000000051e2a7 in ssl3_cleanup_key_block (s=0x245e4f0) at s3_enc.c:456
456 if (s->s3->tmp.key_block != NULL) {
(gdb) bt
#0 0x000000000051e2a7 in ssl3_cleanup_key_block (s=0x245e4f0) at s3_enc.c:456
#1 0x000000000051ab76 in ssl3_free (s=0x245e4f0) at s3_lib.c:2968
#2 0x0000000000528319 in tls1_free (s=0x245e4f0) at t1_lib.c:167
#3 0x0000000000534fba in SSL_free (s=0x245e4f0) at ssl_lib.c:597
#4 0x0000000000534802 in SSL_new (ctx=0x205e938) at ssl_lib.c:395
#
--- ./ssl/s3_lib.c.dist 2015-10-27 20:21:47.980188704 +0100
+++ ./ssl/s3_lib.c 2015-10-27 20:21:48.868193718 +0100
@@ -2955,7 +2955,7 @@
void ssl3_free(SSL *s)
{
- if (s == NULL)
+ if (s == NULL || s->s3 == NULL)
return;
#ifdef TLSEXT_TYPE_opaque_prf_input
_______________________________________________
openssl-bugs-mod mailing list
openssl-bugs-mod at openssl.org
https://mta.openssl.org/mailman/listinfo/openssl-bugs-mod
More information about the openssl-dev
mailing list