Tolerate critical AKID in CRLs.
[oweals/openssl.git] / crypto / asn1 / t_x509.c
index bd22a8dd4fbdda38a77493f4dd36c9619c473d31..111ea5aaac72dd047023deb7ed4cb2aad6d76182 100644 (file)
@@ -138,10 +138,10 @@ int X509_print_ex(BIO *bp, X509 *x, unsigned long nmflags, unsigned long cflag)
                if (BIO_write(bp,"        Serial Number:",22) <= 0) goto err;
 
                bs=X509_get_serialNumber(x);
-               if (bs->length <= 4)
+               if (bs->length <= (int)sizeof(long))
                        {
                        l=ASN1_INTEGER_get(bs);
-                       if (l < 0)
+                       if (bs->type == V_ASN1_NEG_INTEGER)
                                {
                                l= -l;
                                neg="-";
@@ -225,6 +225,24 @@ int X509_print_ex(BIO *bp, X509 *x, unsigned long nmflags, unsigned long cflag)
                        }
                }
 
+       if(!(cflag & X509_FLAG_NO_IDS))
+               {
+               if (ci->issuerUID)
+                       {
+                       if (BIO_printf(bp,"%8sIssuer Unique ID: ","") <= 0) 
+                               goto err;
+                       if (!X509_signature_dump(bp, ci->issuerUID, 12))
+                               goto err;
+                       }
+               if (ci->subjectUID)
+                       {
+                       if (BIO_printf(bp,"%8sSubject Unique ID: ","") <= 0) 
+                               goto err;
+                       if (!X509_signature_dump(bp, ci->subjectUID, 12))
+                               goto err;
+                       }
+               }
+
        if (!(cflag & X509_FLAG_NO_EXTENSIONS))
                X509V3_extensions_print(bp, "X509v3 extensions",
                                        ci->extensions, cflag, 8);
@@ -333,6 +351,8 @@ int X509_signature_print(BIO *bp, X509_ALGOR *sigalg, ASN1_STRING *sig)
                }
        if (sig)
                return X509_signature_dump(bp, sig, 9);
+       else if (BIO_puts(bp, "\n") <= 0)
+               return 0;
        return 1;
 }
 
@@ -473,6 +493,8 @@ int X509_NAME_print(BIO *bp, X509_NAME *name, int obase)
        l=80-2-obase;
 
        b=X509_NAME_oneline(name,NULL,0);
+       if (!b)
+               return 0;
        if (!*b)
                {
                OPENSSL_free(b);