aboutsummaryrefslogtreecommitdiffstats
path: root/apps/ca.c
diff options
context:
space:
mode:
authorRichard Levitte <levitte@openssl.org>2002-10-11 09:38:56 +0000
committerRichard Levitte <levitte@openssl.org>2002-10-11 09:38:56 +0000
commit2245cd87d4330dfa1e2e7210c6644a8c524f3ca1 (patch)
tree3054d038a3a62e98eadf95a481faf49dc6a1e688 /apps/ca.c
parentc199837c542ac45195253c38899c9fa4f4db00b7 (diff)
downloadopenssl-2245cd87d4330dfa1e2e7210c6644a8c524f3ca1.tar.gz
BN_bn2hex() returns "0" instead of "00" for zero. This disrputs the
requirement that the serial number always be an even amount of characters. PR: 248
Diffstat (limited to 'apps/ca.c')
-rw-r--r--apps/ca.c21
1 files changed, 16 insertions, 5 deletions
diff --git a/apps/ca.c b/apps/ca.c
index d60001b018..22c9f820c5 100644
--- a/apps/ca.c
+++ b/apps/ca.c
@@ -1158,9 +1158,14 @@ bad:
}
if (verbose)
{
- if ((f=BN_bn2hex(serial)) == NULL) goto err;
- BIO_printf(bio_err,"next serial number is %s\n",f);
- OPENSSL_free(f);
+ if (BN_is_zero(serial))
+ BIO_printf(bio_err,"next serial number is 00\n");
+ else
+ {
+ if ((f=BN_bn2hex(serial)) == NULL) goto err;
+ BIO_printf(bio_err,"next serial number is %s\n",f);
+ OPENSSL_free(f);
+ }
}
if ((attribs=NCONF_get_section(conf,policy)) == NULL)
@@ -2094,7 +2099,10 @@ again2:
}
}
- row[DB_serial]=BN_bn2hex(serial);
+ if (BN_is_zero(serial))
+ row[DB_serial]=BUF_strdup("00");
+ else
+ row[DB_serial]=BN_bn2hex(serial);
if (row[DB_serial] == NULL)
{
BIO_printf(bio_err,"Memory allocation failure\n");
@@ -2588,7 +2596,10 @@ static int do_revoke(X509 *x509, TXT_DB *db, int type, char *value)
row[i]=NULL;
row[DB_name]=X509_NAME_oneline(X509_get_subject_name(x509),NULL,0);
bn = ASN1_INTEGER_to_BN(X509_get_serialNumber(x509),NULL);
- row[DB_serial]=BN_bn2hex(bn);
+ if (BN_is_zero(bn))
+ row[DB_serial]=BUF_strdup("00");
+ else
+ row[DB_serial]=BN_bn2hex(bn);
BN_free(bn);
if ((row[DB_name] == NULL) || (row[DB_serial] == NULL))
{