From 3bdce4aa3ddd4a3f55b24678faf978d61daa8909 Mon Sep 17 00:00:00 2001 From: Justus Winter Date: Thu, 16 Feb 2017 14:49:27 +0100 Subject: [PATCH] python: Fix passphrase callback wrapping. * lang/python/helpers.c (pyPassphraseCb): Cope with 'passphrase_info' being NULL. Signed-off-by: Justus Winter --- lang/python/helpers.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) 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 */