From 43c0c19fcae57529ea57079e034827372ed0b2b7 Mon Sep 17 00:00:00 2001 From: NIIBE Yutaka Date: Wed, 20 May 2020 18:33:51 +0900 Subject: 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 --- agent/cvt-openpgp.c | 19 ++++++++++--------- 1 file 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); -- cgit v1.2.3