aboutsummaryrefslogtreecommitdiffstats
path: root/src/keylist.c
diff options
context:
space:
mode:
authorAndre Heinecke <[email protected]>2018-03-27 09:24:55 +0000
committerAndre Heinecke <[email protected]>2018-03-27 09:24:55 +0000
commit7c220e387d511b0cf66f99370759c36b729cc444 (patch)
tree87150bca5d471f280e6f1c57b6cc1cd5e36bb54e /src/keylist.c
parentscript: temp homedir (diff)
downloadgpgme-7c220e387d511b0cf66f99370759c36b729cc444.tar.gz
gpgme-7c220e387d511b0cf66f99370759c36b729cc444.zip
core: Initialize key return value in gpgme_get_key
* src/keylist.c (gpgme_get_key): Set r_key to NULL. -- The c++ bindings and others assumed that r_key is set to NULL on error. This is the behavior gpgme_op_keylist_next also has. Even if it is not specified what happens to r_key on error setting it to NULL should not hurt and is more expected behavior. This directly fixes an uninitialized memory access error in the c++ bindings / Kleopatra: GnuPG-Bug-Id: T3865 And will fix some additional random crashes in Kleopatra and GpgOL.
Diffstat (limited to 'src/keylist.c')
-rw-r--r--src/keylist.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/keylist.c b/src/keylist.c
index 7956935b..9c5bd4ea 100644
--- a/src/keylist.c
+++ b/src/keylist.c
@@ -1269,6 +1269,8 @@ gpgme_get_key (gpgme_ctx_t ctx, const char *fpr, gpgme_key_t *r_key,
if (!ctx || !r_key || !fpr)
return TRACE_ERR (gpg_error (GPG_ERR_INV_VALUE));
+ *r_key = NULL;
+
if (strlen (fpr) < 8) /* We have at least a key ID. */
return TRACE_ERR (gpg_error (GPG_ERR_INV_VALUE));