aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2022-09-29 07:43:11 +0000
committerWerner Koch <[email protected]>2022-09-29 07:59:27 +0000
commitb1e5f3b183104a58d71821b7dbe44244d1c3f87f (patch)
tree1a45d56b4229620f45bf3dd6154545d931a1a1cf /src
parentbuild:python: Don't use gpg-error-config/gpgme-config. (diff)
downloadgpgme-b1e5f3b183104a58d71821b7dbe44244d1c3f87f.tar.gz
gpgme-b1e5f3b183104a58d71821b7dbe44244d1c3f87f.zip
core: Fix SIG_CREATED status parsing for 0x1F sigs
* src/sign.c (parse_sig_created): Special case the rfc4880 "1F" status. -- This has always been wrong but we can't simply force strtol to assume hex. Patch compiles but has received no specific test. For details see GnuPG-bug-id: 6223
Diffstat (limited to 'src')
-rw-r--r--src/sign.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/sign.c b/src/sign.c
index 31081aea..31db9bde 100644
--- a/src/sign.c
+++ b/src/sign.c
@@ -251,7 +251,16 @@ parse_sig_created (char *args, gpgme_new_signature_t *sigp,
}
args = tail;
+ /* strtol has been used wrongly here. We can't change this anymore
+ * but we now take care of the 0x1f class which would otherwise let
+ * us run into an error. */
sig->sig_class = strtol (args, &tail, 0);
+ if (!errno && args != tail && sig->sig_class == 1
+ && (*tail == 'F' || *tail == 'f'))
+ {
+ tail++;
+ sig->sig_class = 131; /* Arbitrary unused value in rfc4880. */
+ }
sig->class = sig->sig_class;
sig->_obsolete_class = sig->sig_class;
if (errno || args == tail || *tail != ' ')