Codebase list gpgme1.0 / 8c11834
Drop patch 0004-core-Fix-use-after-free-issue-in-test.patch, present upstream. Debian Janitor 2 years ago
3 changed file(s) with 2 addition(s) and 123 deletion(s). Raw diff Collapse all Expand all
00 gpgme1.0 (1.17.1-1) UNRELEASED; urgency=low
11
22 * New upstream release.
3 * Drop patch 0004-core-Fix-use-after-free-issue-in-test.patch, present
4 upstream.
35
46 -- Debian Janitor <janitor@jelmer.uk> Thu, 17 Mar 2022 19:02:19 -0000
57
+0
-122
debian/patches/0004-core-Fix-use-after-free-issue-in-test.patch less more
0 From: =?utf-8?q?Ingo_Kl=C3=B6cker?= <dev@ingo-kloecker.de>
1 Date: Sat, 26 Jun 2021 18:02:47 +0200
2 Subject: core: Fix use-after-free issue in test
3
4 * tests/gpg/t-edit-sign.c (sign_key, verify_key_signature): New.
5 (main): Factored out signing and verifying the result.
6 --
7
8 Factoring the two steps of the test into different functions fixes the
9 use-after-free issue that was caused by accidentaly using a variable
10 of the first step in the second step.
11
12 GnuPG-bug-id: 5509
13 ---
14 tests/gpg/t-edit-sign.c | 54 +++++++++++++++++++++++++++++++++----------------
15 1 file changed, 37 insertions(+), 17 deletions(-)
16
17 diff --git a/tests/gpg/t-edit-sign.c b/tests/gpg/t-edit-sign.c
18 index 2f98362..e0494c5 100644
19 --- a/tests/gpg/t-edit-sign.c
20 +++ b/tests/gpg/t-edit-sign.c
21 @@ -107,31 +107,19 @@ interact_fnc (void *opaque, const char *status, const char *args, int fd)
22 }
23
24
25 -int
26 -main (int argc, char **argv)
27 +void
28 +sign_key (const char *key_fpr, const char *signer_fpr)
29 {
30 gpgme_ctx_t ctx;
31 gpgme_error_t err;
32 gpgme_data_t out = NULL;
33 - const char *signer_fpr = "A0FF4590BB6122EDEF6E3C542D727CC768697734"; /* Alpha Test */
34 gpgme_key_t signing_key = NULL;
35 - const char *key_fpr = "D695676BDCEDCC2CDD6152BCFE180B1DA9E3B0B2"; /* Bravo Test */
36 gpgme_key_t key = NULL;
37 - gpgme_key_t signed_key = NULL;
38 - gpgme_user_id_t signed_uid = NULL;
39 - gpgme_key_sig_t key_sig = NULL;
40 char *agent_info;
41 - int mode;
42 -
43 - (void)argc;
44 - (void)argv;
45 -
46 - init_gpgme (GPGME_PROTOCOL_OpenPGP);
47
48 err = gpgme_new (&ctx);
49 fail_if_err (err);
50
51 - /* Sign the key */
52 agent_info = getenv("GPG_AGENT_INFO");
53 if (!(agent_info && strchr (agent_info, ':')))
54 gpgme_set_passphrase_cb (ctx, passphrase_cb, 0);
55 @@ -159,8 +147,23 @@ main (int argc, char **argv)
56 gpgme_data_release (out);
57 gpgme_key_unref (key);
58 gpgme_key_unref (signing_key);
59 + gpgme_release (ctx);
60 +}
61 +
62 +
63 +void
64 +verify_key_signature (const char *key_fpr, const char *signer_keyid)
65 +{
66 + gpgme_ctx_t ctx;
67 + gpgme_error_t err;
68 + gpgme_key_t signed_key = NULL;
69 + gpgme_user_id_t signed_uid = NULL;
70 + gpgme_key_sig_t key_sig = NULL;
71 + int mode;
72 +
73 + err = gpgme_new (&ctx);
74 + fail_if_err (err);
75
76 - /* Verify the key signature */
77 mode = gpgme_get_keylist_mode (ctx);
78 mode |= GPGME_KEYLIST_MODE_SIGS;
79 err = gpgme_set_keylist_mode (ctx, mode);
80 @@ -168,7 +171,7 @@ main (int argc, char **argv)
81 err = gpgme_get_key (ctx, key_fpr, &signed_key, 0);
82 fail_if_err (err);
83
84 - signed_uid = key->uids;
85 + signed_uid = signed_key->uids;
86 if (!signed_uid)
87 {
88 fprintf (stderr, "Signed key has no user IDs\n");
89 @@ -180,7 +183,7 @@ main (int argc, char **argv)
90 exit (1);
91 }
92 key_sig = signed_uid->signatures->next;
93 - if (strcmp ("2D727CC768697734", key_sig->keyid))
94 + if (strcmp (signer_keyid, key_sig->keyid))
95 {
96 fprintf (stderr, "Unexpected key ID in second user ID sig: %s\n",
97 key_sig->keyid);
98 @@ -196,6 +199,23 @@ main (int argc, char **argv)
99
100 gpgme_key_unref (signed_key);
101 gpgme_release (ctx);
102 +}
103 +
104 +
105 +int
106 +main (int argc, char **argv)
107 +{
108 + const char *signer_fpr = "A0FF4590BB6122EDEF6E3C542D727CC768697734"; /* Alpha Test */
109 + const char *signer_keyid = signer_fpr + strlen(signer_fpr) - 16;
110 + const char *key_fpr = "D695676BDCEDCC2CDD6152BCFE180B1DA9E3B0B2"; /* Bravo Test */
111 +
112 + (void)argc;
113 + (void)argv;
114 +
115 + init_gpgme (GPGME_PROTOCOL_OpenPGP);
116 +
117 + sign_key (key_fpr, signer_fpr);
118 + verify_key_signature (key_fpr, signer_keyid);
119
120 return 0;
121 }
00 0001-avoid-identifying-as-beta.patch
11 0004-drop-python2-support.patch
22 0006-Ship-python-examples-with-python3-in-shebang-line.patch
3 0004-core-Fix-use-after-free-issue-in-test.patch
43 0005-Make-sure-expiration-time-is-interpreted-as-unsigned.patch
54 0006-Avoid-the-hardcoded-list-of-Python-versions.patch