diff options
author | Andre Heinecke <[email protected]> | 2018-03-27 09:24:55 +0000 |
---|---|---|
committer | Andre Heinecke <[email protected]> | 2018-03-27 09:24:55 +0000 |
commit | 7c220e387d511b0cf66f99370759c36b729cc444 (patch) | |
tree | 87150bca5d471f280e6f1c57b6cc1cd5e36bb54e /src/keylist.c | |
parent | script: temp homedir (diff) | |
download | gpgme-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.c | 2 |
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)); |