From 0b84b5f31fd6be36c2c13598cde0d7c4d44ab5fe Mon Sep 17 00:00:00 2001 From: nils Date: Mon, 27 Sep 2010 19:25:31 +0000 Subject: more error handling for encryption in context.cpp git-svn-id: http://cpunk.de/svn/src/gpg4usb/trunk@378 34ebc366-c3a9-4b3c-9f84-69acf7962910 --- context.cpp | 38 +++++++++++++++++++++++--------------- 1 file changed, 23 insertions(+), 15 deletions(-) (limited to 'context.cpp') diff --git a/context.cpp b/context.cpp index 5a9cb67..b2dfef9 100644 --- a/context.cpp +++ b/context.cpp @@ -261,25 +261,33 @@ bool Context::encrypt(QStringList *uidList, const QByteArray &inBuffer, QByteArr recipients[uidList->count()] = NULL; //If the last parameter isnt 0, a private copy of data is made - err = gpgme_data_new_from_mem(&in, inBuffer.data(), inBuffer.size(), 1); - checkErr(err); - err = gpgme_data_new(&out); - checkErr(err); - - err = gpgme_op_encrypt(mCtx, recipients, GPGME_ENCRYPT_ALWAYS_TRUST, in, out); - checkErr(err); - - err = readToBuffer(out, outBuffer); - checkErr(err); - + if (mCtx) { + err = gpgme_data_new_from_mem(&in, inBuffer.data(), inBuffer.size(), 1); + checkErr(err); + if (!err) { + err = gpgme_data_new(&out); + checkErr(err); + if (!err) { + err = gpgme_op_encrypt(mCtx, recipients, GPGME_ENCRYPT_ALWAYS_TRUST, in, out); + checkErr(err); + if (!err) { + err = readToBuffer(out, outBuffer); + checkErr(err); + } + } + } + } /* unref all keys */ for (int i = 0; i <= uidList->count(); i++) { gpgme_key_unref(recipients[i]); } - gpgme_data_release(in); - gpgme_data_release(out); - - return true; + if (in) { + gpgme_data_release(in); + } + if (out) { + gpgme_data_release(out); + } + return (err == GPG_ERR_NO_ERROR); } /** Decrypt QByteAarray, return QByteArray -- cgit