crypto: fix error check on gcry_md_open

Gcrypt does not return negative values on error, it returns non-zero
values. This caused QEMU not to detect failure to open an unsupported
hash, resulting in a later crash trying to use a NULL context.

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
Daniel P. Berrangé 2024-10-30 10:08:12 +00:00
parent d078da86d6
commit bbd40a0e31
1 changed files with 2 additions and 2 deletions

View File

@ -52,7 +52,7 @@ static
QCryptoHash *qcrypto_gcrypt_hash_new(QCryptoHashAlgo alg, Error **errp) QCryptoHash *qcrypto_gcrypt_hash_new(QCryptoHashAlgo alg, Error **errp)
{ {
QCryptoHash *hash; QCryptoHash *hash;
int ret; gcry_error_t ret;
hash = g_new(QCryptoHash, 1); hash = g_new(QCryptoHash, 1);
hash->alg = alg; hash->alg = alg;
@ -60,7 +60,7 @@ QCryptoHash *qcrypto_gcrypt_hash_new(QCryptoHashAlgo alg, Error **errp)
ret = gcry_md_open((gcry_md_hd_t *) hash->opaque, ret = gcry_md_open((gcry_md_hd_t *) hash->opaque,
qcrypto_hash_alg_map[alg], 0); qcrypto_hash_alg_map[alg], 0);
if (ret < 0) { if (ret != 0) {
error_setg(errp, error_setg(errp,
"Unable to initialize hash algorithm: %s", "Unable to initialize hash algorithm: %s",
gcry_strerror(ret)); gcry_strerror(ret));