diff options
author | Richard Levitte <levitte@openssl.org> | 2002-10-11 09:38:56 +0000 |
---|---|---|
committer | Richard Levitte <levitte@openssl.org> | 2002-10-11 09:38:56 +0000 |
commit | 2245cd87d4330dfa1e2e7210c6644a8c524f3ca1 (patch) | |
tree | 3054d038a3a62e98eadf95a481faf49dc6a1e688 /apps | |
parent | c199837c542ac45195253c38899c9fa4f4db00b7 (diff) | |
download | openssl-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')
-rw-r--r-- | apps/ca.c | 21 | ||||
-rw-r--r-- | apps/ocsp.c | 5 |
2 files changed, 20 insertions, 6 deletions
@@ -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)) { diff --git a/apps/ocsp.c b/apps/ocsp.c index 59b97a634b..17b2a659c3 100644 --- a/apps/ocsp.c +++ b/apps/ocsp.c @@ -1120,7 +1120,10 @@ static char **lookup_serial(TXT_DB *db, ASN1_INTEGER *ser) char *itmp, *row[DB_NUMBER],**rrow; for (i = 0; i < DB_NUMBER; i++) row[i] = NULL; bn = ASN1_INTEGER_to_BN(ser,NULL); - itmp = BN_bn2hex(bn); + if (BN_is_zero(bn)) + itmp = BUF_strdup("00"); + else + itmp = BN_bn2hex(bn); row[DB_serial] = itmp; BN_free(bn); rrow=TXT_DB_get_by_index(db,DB_serial,row); |