diff options
author | Werner Koch <[email protected]> | 2022-05-05 12:02:02 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2022-05-05 12:02:02 +0000 |
commit | 36a5509e11c81305c4ded93982fa594bd52555a6 (patch) | |
tree | 80c22139e9e75311285abe8e0c279064d8442216 | |
parent | tests: Add a test for Ed25519 keys for non-protected secret. (diff) | |
download | gnupg-36a5509e11c81305c4ded93982fa594bd52555a6.tar.gz gnupg-36a5509e11c81305c4ded93982fa594bd52555a6.zip |
gpg: Minor robustness fix.
* g10/parse-packet.c (mpi_read_detect_0_removal): Protect agains
failed gcry_mpi_scan.
--
Fixes-commit: 3fcef7371480cce392d690897d42955f1b19c12a
-rw-r--r-- | g10/parse-packet.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/g10/parse-packet.c b/g10/parse-packet.c index aee6e0798..5fea1ac43 100644 --- a/g10/parse-packet.c +++ b/g10/parse-packet.c @@ -252,13 +252,16 @@ mpi_read_detect_0_removal (iobuf_t inp, unsigned int *ret_nread, int secure, a = NULL; /* Possibly, it has leading zeros. */ - nbits1 = gcry_mpi_get_nbits (a); - if (nbits > nbits1) + if (a) { - *r_csum_tweak -= (nbits >> 8); - *r_csum_tweak -= (nbits & 0xff); - *r_csum_tweak += (nbits1 >> 8); - *r_csum_tweak += (nbits1 & 0xff); + nbits1 = gcry_mpi_get_nbits (a); + if (nbits > nbits1) + { + *r_csum_tweak -= (nbits >> 8); + *r_csum_tweak -= (nbits & 0xff); + *r_csum_tweak += (nbits1 >> 8); + *r_csum_tweak += (nbits1 & 0xff); + } } *ret_nread = nread; |