ts: fix double free on error path.
authorPauli <pauli@openssl.org>
Sun, 18 Apr 2021 22:55:37 +0000 (08:55 +1000)
committerPauli <pauli@openssl.org>
Tue, 20 Apr 2021 23:17:22 +0000 (09:17 +1000)
commitdb78c84eb2fa9c41124690bcc2ea50e05f5fc7b7
treef7a9f8b7498f39e0d2cfb4e8dc081d15e4ceb7d8
parentb06450bcf763735a89b65ca3ec176600fe7fceed
ts: fix double free on error path.

In function int_ts_RESP_verify_token, if (flags & TS_VFY_DATA) is true, function ts_compute_imprint() will be called at line 299.
In the implementation of ts_compute_imprint, it allocates md_alg at line 406.
But after the allocation, if the execution goto err, then md_alg will be freed in the first time by X509_ALGOR_free at line 439.

After that, ts_compute_imprint returns 0 and the execution goto err branch of int_ts_RESP_verify_token.
In the err branch, md_alg will be freed in the second time at line 320.

Bug reported by @Yunlongs

Fixes #14914

Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/14921)
crypto/ts/ts_rsp_verify.c