aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNIIBE Yutaka <gniibe@fsij.org>2020-10-30 15:21:20 +0900
committerNIIBE Yutaka <gniibe@fsij.org>2020-10-30 15:21:20 +0900
commitdd4fb1c8f668f78fbcf5052e80c5c40d4cdad20c (patch)
tree86daef0ea730c72991fe1ee8196b842e235523ec
parent243f9176e799b2328f2e5bed93099bfc474fdc5a (diff)
downloadgnupg-dd4fb1c8f668f78fbcf5052e80c5c40d4cdad20c.tar.gz
gpg: Fix first zero-byte case for SOS handling.
* g10/export.c (transfer_format_to_openpgp): Check the first byte. * g10/pkglue.c (sexp_extract_param_sos): Likewise. -- GnuPG-bug-id: 5116 Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
-rw-r--r--g10/export.c2
-rw-r--r--g10/pkglue.c2
2 files changed, 2 insertions, 2 deletions
diff --git a/g10/export.c b/g10/export.c
index a9eba1544..8a4f6f1f3 100644
--- a/g10/export.c
+++ b/g10/export.c
@@ -985,7 +985,7 @@ transfer_format_to_openpgp (gcry_sexp_t s_pgp, PKT_public_key *pk)
unsigned int nbits = valuelen*8;
const unsigned char *p = value;
- if (nbits >= 8 && !(*p & 0x80))
+ if (*p && nbits >= 8 && !(*p & 0x80))
if (--nbits >= 7 && !(*p & 0x40))
if (--nbits >= 6 && !(*p & 0x20))
if (--nbits >= 5 && !(*p & 0x10))
diff --git a/g10/pkglue.c b/g10/pkglue.c
index cd6e90838..13f8e2f03 100644
--- a/g10/pkglue.c
+++ b/g10/pkglue.c
@@ -71,7 +71,7 @@ sexp_extract_param_sos (gcry_sexp_t sexp, const char *param, gcry_mpi_t *r_sos)
unsigned int nbits = buflen*8;
unsigned char *p = p0;
- if (nbits >= 8 && !(*p & 0x80))
+ if (*p && nbits >= 8 && !(*p & 0x80))
if (--nbits >= 7 && !(*p & 0x40))
if (--nbits >= 6 && !(*p & 0x20))
if (--nbits >= 5 && !(*p & 0x10))