aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2022-05-05 12:02:02 +0000
committerWerner Koch <[email protected]>2022-05-05 12:02:02 +0000
commit36a5509e11c81305c4ded93982fa594bd52555a6 (patch)
tree80c22139e9e75311285abe8e0c279064d8442216
parenttests: Add a test for Ed25519 keys for non-protected secret. (diff)
downloadgnupg-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.c15
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;