Browse Source

fix signature printing routines

Dr. Stephen Henson 13 years ago
parent
commit
8ec3fa0597
3 changed files with 13 additions and 1 deletions
  1. 2 0
      crypto/asn1/t_x509.c
  2. 9 1
      crypto/dsa/dsa_ameth.c
  3. 2 0
      crypto/rsa/rsa_ameth.c

+ 2 - 0
crypto/asn1/t_x509.c

@@ -333,6 +333,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;
 }
 

+ 9 - 1
crypto/dsa/dsa_ameth.c

@@ -547,7 +547,15 @@ static int dsa_sig_print(BIO *bp, const X509_ALGOR *sigalg,
 					int indent, ASN1_PCTX *pctx)
 	{
 	DSA_SIG *dsa_sig;
-	const unsigned char *p = sig->data;
+	const unsigned char *p;
+	if (!sig)
+		{
+		if (BIO_puts(bp, "\n") <= 0)
+			return 0;
+		else
+			return 1;
+		}
+	p = sig->data;
 	dsa_sig = d2i_DSA_SIG(NULL, &p, sig->length);
 	if (dsa_sig)
 		{

+ 2 - 0
crypto/rsa/rsa_ameth.c

@@ -400,6 +400,8 @@ static int rsa_sig_print(BIO *bp, const X509_ALGOR *sigalg,
 		if (!rv)
 			return 0;
 		}
+	else if (!sig && BIO_puts(bp, "\n") <= 0)
+		return 0;
 	if (sig)
 		return X509_signature_dump(bp, sig, indent);
 	return 1;