aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJustus Winter <[email protected]>2017-02-16 13:49:27 +0000
committerJustus Winter <[email protected]>2017-02-16 13:49:27 +0000
commit3bdce4aa3ddd4a3f55b24678faf978d61daa8909 (patch)
treea6fc133a75d7b0cfd92e3cb597473b4a40809ea3
parentpython: Fix error handling. (diff)
downloadgpgme-3bdce4aa3ddd4a3f55b24678faf978d61daa8909.tar.gz
gpgme-3bdce4aa3ddd4a3f55b24678faf978d61daa8909.zip
python: Fix passphrase callback wrapping.
* lang/python/helpers.c (pyPassphraseCb): Cope with 'passphrase_info' being NULL. Signed-off-by: Justus Winter <[email protected]>
-rw-r--r--lang/python/helpers.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/lang/python/helpers.c b/lang/python/helpers.c
index 576767ca..947819d2 100644
--- a/lang/python/helpers.c
+++ b/lang/python/helpers.c
@@ -377,7 +377,21 @@ static gpgme_error_t pyPassphraseCb(void *hook,
goto leave;
}
- PyTuple_SetItem(args, 1, PyBytes_FromString(passphrase_info));
+ if (passphrase_info == NULL)
+ {
+ Py_INCREF(Py_None);
+ PyTuple_SetItem(args, 1, Py_None);
+ }
+ else
+ PyTuple_SetItem(args, 1, PyUnicode_DecodeUTF8(passphrase_info,
+ strlen (passphrase_info),
+ "strict"));
+ if (PyErr_Occurred()) {
+ Py_DECREF(args);
+ err_status = gpg_error(GPG_ERR_GENERAL);
+ goto leave;
+ }
+
PyTuple_SetItem(args, 2, PyBool_FromLong((long)prev_was_bad));
if (dataarg) {
Py_INCREF(dataarg); /* Because GetItem doesn't give a ref but SetItem taketh away */