diff options
author | NIIBE Yutaka <[email protected]> | 2020-05-20 09:33:51 +0000 |
---|---|---|
committer | NIIBE Yutaka <[email protected]> | 2020-05-20 09:33:51 +0000 |
commit | 43c0c19fcae57529ea57079e034827372ed0b2b7 (patch) | |
tree | 3e39c86b3a9b3bbf522dbfcd472b69c30e1e257b | |
parent | ecc-sos: Avoid using gcry_mpi_print and gcry_mpi_scan. (diff) | |
download | gnupg-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.c | 19 |
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); |