diff -ur openssl-orig/ssl/ssl_asn1.c openssl-work/ssl/ssl_asn1.c
--- openssl-orig/ssl/ssl_asn1.c	2008-09-14 15:42:40.000000000 +0200
+++ openssl-work/ssl/ssl_asn1.c	2009-08-11 14:21:28.000000000 +0200
@@ -330,8 +330,8 @@
 		}
 	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;
@@ -422,8 +422,8 @@
 	    {
 	    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
 		{
