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/ca.c | |
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/ca.c')
-rw-r--r-- | apps/ca.c | 21 |
1 files changed, 16 insertions, 5 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)) { |