PR: 2009
authorDr. Stephen Henson <steve@openssl.org>
Wed, 2 Sep 2009 13:20:02 +0000 (13:20 +0000)
committerDr. Stephen Henson <steve@openssl.org>
Wed, 2 Sep 2009 13:20:02 +0000 (13:20 +0000)
Submitted by: "Alexei Khlebnikov" <alexei.khlebnikov@opera.com>
Approved by: steve@openssl.org

Avoid memory leak and fix error reporting in d2i_SSL_SESSION(). NB: although
the ticket mentions buffer overruns this isn't a security issue because
the SSL_SESSION structure is generated internally and it should never be
possible to supply its contents from an untrusted application (this would
among other things destroy session cache security).

ssl/ssl_asn1.c

index 1030260b3b620fdb4e13c70990fb8a92bb532c62..48b111c8f757441b68b3cad8140bae97b250be37 100644 (file)
@@ -353,8 +353,8 @@ SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp,
                }
        else
                {
-               SSLerr(SSL_F_D2I_SSL_SESSION,SSL_R_UNKNOWN_SSL_VERSION);
-               return(NULL);
+               c.error=SSL_R_UNKNOWN_SSL_VERSION;
+               goto err;
                }
        
        ret->cipher=NULL;
@@ -445,8 +445,8 @@ SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp,
            {
            if (os.length > SSL_MAX_SID_CTX_LENGTH)
                {
-               ret->sid_ctx_length=os.length;
-               SSLerr(SSL_F_D2I_SSL_SESSION,SSL_R_BAD_LENGTH);
+               c.error=SSL_R_BAD_LENGTH;
+               goto err;
                }
            else
                {