OS: OpenBSD, Linux
OpenSSL version: 0.9.7j - 0.9.7m

Snippet from crypto/x509v3/v3_alt.c

static int copy_email(X509V3_CTX *ctx, GENERAL_NAMES *gens, int move_p)
{
     [...]
     if(ctx->flags == CTX_TEST) return 1;
     if(!ctx || (!ctx->subject_cert && !ctx->subject_req))
         [...]

As you see first ctx is deferenced and 'flags' field is accessed and 
only then ctx is tested for NULL. When ctx is NULL it leads to an 
invalid memory access.
This bug is appears to be fixed in 0.9.8 branch. Here is a trivial patch 
for 0.9.7m


diff -urN openssl-0.9.7m.orig/crypto/x509v3/v3_alt.c 
openssl-0.9.7m.fixed/crypto/x509v3/v3_alt.c
--- openssl-0.9.7m.orig/crypto/x509v3/v3_alt.c  Sun Jan 21 17:02:32 2007
+++ openssl-0.9.7m.fixed/crypto/x509v3/v3_alt.c Tue Nov 18 13:18:37 2008
@@ -310,7 +310,7 @@
        X509_NAME_ENTRY *ne;
        GENERAL_NAME *gen = NULL;
        int i;
-       if(ctx->flags == CTX_TEST) return 1;
+       if(ctx && ctx->flags == CTX_TEST) return 1;
        if(!ctx || (!ctx->subject_cert && !ctx->subject_req)) {
                X509V3err(X509V3_F_COPY_EMAIL,X509V3_R_NO_SUBJECT_DETAILS);
                goto err;


Regards,
Andrei Korostelev

______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       openssl-dev@openssl.org
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to