summaryrefslogtreecommitdiffstats
path: root/apps/ocsp.c
diff options
context:
space:
mode:
authorJiasheng Jiang <jiasheng@iscas.ac.cn>2022-02-10 15:41:40 +0800
committerTomas Mraz <tomas@openssl.org>2022-02-17 11:23:03 +0100
commit8f084b43803d53e15d83ed130210f026f84679ff (patch)
tree358c2a8cbe03d819d23c3cd792c9c27a1c246b88 /apps/ocsp.c
parent0c5905581e9d1d79d62cac56a0e3c2ed487afecf (diff)
apps/ocsp: Add check for OPENSSL_strdup
Just assert 'bn' to be non-NULL is not enough. The check for 'itmp' is still needed. If 'bn' is 0, the 'itmp' is assigned by OPENSSL_strdup(). Since OPENSSL_strdup() may fail because of the lack of memory, the 'itmp' will be NULL and be an valid parameter hashed in TXT_DB_get_by_index(), returning a wrong result. Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn> Reviewed-by: Paul Dale <pauli@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.org> (Merged from https://github.com/openssl/openssl/pull/17677)
Diffstat (limited to 'apps/ocsp.c')
-rw-r--r--apps/ocsp.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/apps/ocsp.c b/apps/ocsp.c
index 18e7c44191..51f2b37f47 100644
--- a/apps/ocsp.c
+++ b/apps/ocsp.c
@@ -1180,10 +1180,12 @@ static char **lookup_serial(CA_DB *db, ASN1_INTEGER *ser)
bn = ASN1_INTEGER_to_BN(ser, NULL);
OPENSSL_assert(bn); /* FIXME: should report an error at this
* point and abort */
- if (BN_is_zero(bn))
+ if (BN_is_zero(bn)) {
itmp = OPENSSL_strdup("00");
- else
+ OPENSSL_assert(itmp);
+ } else {
itmp = BN_bn2hex(bn);
+ }
row[DB_serial] = itmp;
BN_free(bn);
rrow = TXT_DB_get_by_index(db->db, DB_serial, row);