aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNIIBE Yutaka <[email protected]>2020-05-20 09:33:51 +0000
committerNIIBE Yutaka <[email protected]>2020-05-20 09:33:51 +0000
commit43c0c19fcae57529ea57079e034827372ed0b2b7 (patch)
tree3e39c86b3a9b3bbf522dbfcd472b69c30e1e257b
parentecc-sos: Avoid using gcry_mpi_print and gcry_mpi_scan. (diff)
downloadgnupg-43c0c19fcae57529ea57079e034827372ed0b2b7.tar.gz
gnupg-43c0c19fcae57529ea57079e034827372ed0b2b7.zip
ecc-sos: Fix SOS handling in do_unprotect.
* agent/cvt-openpgp.c (do_unprotect): Exclude the case when the first byte is zero. Signed-off-by: NIIBE Yutaka <[email protected]>
-rw-r--r--agent/cvt-openpgp.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/agent/cvt-openpgp.c b/agent/cvt-openpgp.c
index 789a50398..2a64d5d8f 100644
--- a/agent/cvt-openpgp.c
+++ b/agent/cvt-openpgp.c
@@ -451,15 +451,16 @@ do_unprotect (const char *passphrase,
nbytes = (nbits+7)/8;
nbits = nbytes * 8;
- if (nbits >= 8 && !(*buffer & 0x80))
- if (--nbits >= 7 && !(*buffer & 0x40))
- if (--nbits >= 6 && !(*buffer & 0x20))
- if (--nbits >= 5 && !(*buffer & 0x10))
- if (--nbits >= 4 && !(*buffer & 0x08))
- if (--nbits >= 3 && !(*buffer & 0x04))
- if (--nbits >= 2 && !(*buffer & 0x02))
- if (--nbits >= 1 && !(*buffer & 0x01))
- --nbits;
+ if (*buffer)
+ if (nbits >= 8 && !(*buffer & 0x80))
+ if (--nbits >= 7 && !(*buffer & 0x40))
+ if (--nbits >= 6 && !(*buffer & 0x20))
+ if (--nbits >= 5 && !(*buffer & 0x10))
+ if (--nbits >= 4 && !(*buffer & 0x08))
+ if (--nbits >= 3 && !(*buffer & 0x04))
+ if (--nbits >= 2 && !(*buffer & 0x02))
+ if (--nbits >= 1 && !(*buffer & 0x01))
+ --nbits;
actual_csum += (nbits >> 8);
actual_csum += (nbits & 0xff);