diff options
author | Justus Winter <[email protected]> | 2017-02-16 13:49:27 +0000 |
---|---|---|
committer | Justus Winter <[email protected]> | 2017-02-16 13:49:27 +0000 |
commit | 3bdce4aa3ddd4a3f55b24678faf978d61daa8909 (patch) | |
tree | a6fc133a75d7b0cfd92e3cb597473b4a40809ea3 | |
parent | python: Fix error handling. (diff) | |
download | gpgme-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.c | 16 |
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 */ |