diff --git a/lang/cpp/src/GpgmeppConfig.cmake.in.in b/lang/cpp/src/GpgmeppConfig.cmake.in.in index 3104d71..73f5eaa 100644 --- a/lang/cpp/src/GpgmeppConfig.cmake.in.in +++ b/lang/cpp/src/GpgmeppConfig.cmake.in.in @@ -63,7 +63,7 @@ add_library(Gpgmepp SHARED IMPORTED) set_target_properties(Gpgmepp PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "@resolved_includedir@/gpgme++;@resolved_includedir@" - INTERFACE_LINK_LIBRARIES "pthread;@resolved_libdir@/libgpgme@libsuffix@" + INTERFACE_LINK_LIBRARIES "pthread;@resolved_libdir@/libgpgme@libsuffix@;@LIBASSUAN_LIBS@" IMPORTED_LOCATION "@resolved_libdir@/libgpgmepp@libsuffix@" ) diff --git a/lang/cpp/src/context.cpp b/lang/cpp/src/context.cpp index 11b200b..135e4d5 100644 --- a/lang/cpp/src/context.cpp +++ b/lang/cpp/src/context.cpp @@ -222,7 +222,6 @@ Context *Context::createForProtocol(Protocol proto) } break; default: - gpgme_release(ctx); return 0; } @@ -268,7 +267,6 @@ std::unique_ptr Context::createForEngine(Engine eng, Error *error) } break; default: - gpgme_release(ctx); if (error) { *error = Error::fromCode(GPG_ERR_INV_ARG); } diff --git a/lang/cpp/src/data.cpp b/lang/cpp/src/data.cpp index 5b41a64..32ca561 100644 --- a/lang/cpp/src/data.cpp +++ b/lang/cpp/src/data.cpp @@ -244,7 +244,6 @@ std::vector GpgME::Data::toKeys(Protocol proto) const } if (gpgme_op_keylist_from_data_start (ctx->impl()->ctx, d->data, 0)) { - delete ctx; return ret; } diff --git a/lang/python/gpgme.i b/lang/python/gpgme.i index 9de56a0..492326b 100644 --- a/lang/python/gpgme.i +++ b/lang/python/gpgme.i @@ -43,7 +43,7 @@ { encodedInput = PyUnicode_AsUTF8String($input); if (encodedInput == NULL) - SWIG_fail; + return NULL; $1 = PyBytes_AsString(encodedInput); } else if (PyBytes_Check($input)) @@ -52,25 +52,22 @@ PyErr_Format(PyExc_TypeError, "arg %d: expected str, bytes, or None, got %s", $argnum, $input->ob_type->tp_name); - SWIG_fail; + return NULL; } } %typemap(freearg) const char * { Py_XDECREF(encodedInput$argnum); } -%typemap(arginit) const char *[] { - $1 = NULL; -} - /* Likewise for a list of strings. */ -%typemap(in) const char *[] (size_t size, +%typemap(in) const char *[] (void *vector = NULL, + size_t size, PyObject **pyVector = NULL) { /* Check if is a list */ if (PyList_Check($input)) { size_t i, j; size = PyList_Size($input); - $1 = (char **) malloc((size+1) * sizeof(char *)); + $1 = (char **) (vector = malloc((size+1) * sizeof(char *))); pyVector = calloc(sizeof *pyVector, size); for (i = 0; i < size; i++) { @@ -79,7 +76,12 @@ { pyVector[i] = PyUnicode_AsUTF8String(o); if (pyVector[i] == NULL) - SWIG_fail; + { + free(vector); + for (j = 0; j < i; j++) + Py_XDECREF(pyVector[j]); + return NULL; + } $1[i] = PyBytes_AsString(pyVector[i]); } else if (PyString_Check(o)) @@ -89,7 +91,8 @@ "arg %d: list must contain only str or bytes, got %s " "at position %d", $argnum, o->ob_type->tp_name, i); - SWIG_fail; + free($1); + return NULL; } } $1[i] = NULL; @@ -97,17 +100,14 @@ PyErr_Format(PyExc_TypeError, "arg %d: expected a list of str or bytes, got %s", $argnum, $input->ob_type->tp_name); - SWIG_fail; + return NULL; } } %typemap(freearg) const char *[] { - if (pyVector$argnum) { - size_t i; - for (i = 0; i < size$argnum; i++) - Py_XDECREF(pyVector$argnum[i]); - free(pyVector$argnum); - } - if ($1) free($1); + size_t i; + free(vector$argnum); + for (i = 0; i < size$argnum; i++) + Py_XDECREF(pyVector$argnum[i]); } /* Release returned buffers as necessary. */ @@ -125,7 +125,7 @@ if (!PySequence_Check($input)) { PyErr_Format(PyExc_ValueError, "arg %d: Expected a list of gpgme_key_t", $argnum); - SWIG_fail; + return NULL; } if((numb = PySequence_Length($input)) != 0) { $1 = (gpgme_key_t*)malloc((numb+1)*sizeof(gpgme_key_t)); @@ -142,7 +142,8 @@ "arg %d: list must contain only gpgme_key_ts, got %s " "at position %d", $argnum, pypointer->ob_type->tp_name, i); - SWIG_fail; + free($1); + return NULL; } Py_DECREF(pypointer); } @@ -168,7 +169,7 @@ pypointer = _gpg_obj2gpgme_data_t($input, $argnum, &wrapper, &bytesio, &view); if (pypointer == NULL) - SWIG_fail; + return NULL; have_view = !! view.obj; /* input = $input, 1 = $1, 1_descriptor = $1_descriptor */ @@ -178,7 +179,7 @@ if ((SWIG_ConvertPtr(pypointer,(void **) &$1, $1_descriptor, SWIG_POINTER_EXCEPTION | $disown )) == -1) { Py_DECREF(pypointer); - SWIG_fail; + return NULL; } Py_DECREF(pypointer); } @@ -335,11 +336,6 @@ PyErr_SetString(PyExc_TypeError, "Numeric argument expected"); } -%typemap(arginit) (void *buffer, size_t size), (char *buf, size_t buflen) { - $1 = NULL; - $2 = 0; -} - /* Those are for gpgme_data_read() and gpgme_strerror_r(). */ %typemap(in) (void *buffer, size_t size), (char *buf, size_t buflen) { { @@ -353,12 +349,12 @@ else { PyErr_SetString(PyExc_TypeError, "Numeric argument expected"); - SWIG_fail; + return NULL; } if (tmp$argnum < 0) { PyErr_SetString(PyExc_ValueError, "Positive integer expected"); - SWIG_fail; + return NULL; } $2 = (size_t) tmp$argnum; $1 = ($1_ltype) malloc($2+1); @@ -367,11 +363,11 @@ %typemap(argout) (void *buffer, size_t size), (char *buf, size_t buflen) { Py_XDECREF($result); /* Blow away any previous result */ if (result < 0) { /* Check for I/O error */ - if ($1) free($1); + free($1); return PyErr_SetFromErrno(PyExc_RuntimeError); } $result = PyBytes_FromStringAndSize($1,result); - if ($1) free($1); + free($1); } /* For gpgme_data_write, but should be universal. */ @@ -384,11 +380,11 @@ { encodedInput = PyUnicode_AsUTF8String($input); if (encodedInput == NULL) - SWIG_fail; + return NULL; if (PyBytes_AsStringAndSize(encodedInput, (char **) &$1, &ssize) == -1) { Py_DECREF(encodedInput); - SWIG_fail; + return NULL; } } else if (PyBytes_Check($input)) @@ -397,7 +393,7 @@ PyErr_Format(PyExc_TypeError, "arg %d: expected str, bytes, or None, got %s", $argnum, $input->ob_type->tp_name); - SWIG_fail; + return NULL; } if (! $1) @@ -426,17 +422,8 @@ size++; } $result = PyList_New(size); - if ($result == NULL) - SWIG_fail; for (i=0,curr=$1; inext) { PyObject *o = SWIG_NewPointerObj(SWIG_as_voidptr(curr), $1_descriptor, %newpointer_flags); - if (o == NULL) { - int j; - for (j = 0; j < i; j++) - Py_XDECREF(PyList_GetItem($result, j)); - Py_DECREF($result); - SWIG_fail; - } PyList_SetItem($result, i, o); } } @@ -449,8 +436,6 @@ PyObject *fragile; fragile = SWIG_NewPointerObj(SWIG_as_voidptr($1), $1_descriptor, %newpointer_flags); - if (fragile == NULL) - SWIG_fail; $result = _gpg_wrap_result(fragile, name); Py_DECREF(fragile); } @@ -474,28 +459,22 @@ wrapresult(gpgme_vfs_mount_result_t, "VFSMountResult") } $result = PyList_New(size); if ($result == NULL) - SWIG_fail; /* raise */ + return NULL; /* raise */ for (i=0,curr=$1; inext) { PyObject *fragile, *o; fragile = SWIG_NewPointerObj(SWIG_as_voidptr(curr), $1_descriptor, %newpointer_flags); if (fragile == NULL) { - int j; - for (j = 0; j < i; j++) - Py_XDECREF(PyList_GetItem($result, j)); Py_DECREF($result); - SWIG_fail; /* raise */ + return NULL; /* raise */ } o = _gpg_wrap_result(fragile, "EngineInfo"); Py_DECREF(fragile); if (o == NULL) { - int j; - for (j = 0; j < i; j++) - Py_XDECREF(PyList_GetItem($result, j)); Py_DECREF($result); - SWIG_fail; /* raise */ + return NULL; /* raise */ } PyList_SetItem($result, i, o); } diff --git a/lang/qt/tests/t-tofuinfo.cpp b/lang/qt/tests/t-tofuinfo.cpp index 2d88106..b716102 100644 --- a/lang/qt/tests/t-tofuinfo.cpp +++ b/lang/qt/tests/t-tofuinfo.cpp @@ -69,48 +69,46 @@ static const char testMsg1[] = static const char conflictKey1[] = "-----BEGIN PGP PUBLIC KEY BLOCK-----\n" "\n" -"mDMEXDWgpxYJKwYBBAHaRw8BAQdAguVu4qkx8iw4eU+TQ4vvcKG7IdcZvbMhw3Zc\n" -"npGf0+u0GXRvZnVfY29uZmxpY3RAZXhhbXBsZS5jb22IkAQTFggAOBYhBO6ovNDG\n" -"nLzbR1TlMJYJ0fjlWbUrBQJcNaCnAhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4BAheA\n" -"AAoJEJYJ0fjlWbUrLaMBALegwkv2+sEcmKZqxt8JscYvFiEuycv2+rKHaZA0eDoN\n" -"AP97W4XrJb5x49J5jDDdeko8k00uGqiiuAXJo27/i/phA7g4BFw1oKcSCisGAQQB\n" -"l1UBBQEBB0Crhw24E2lPBhd/y+ZFotQ/2TrYqkUQqGPmff8ofLziNgMBCAeIeAQY\n" -"FggAIBYhBO6ovNDGnLzbR1TlMJYJ0fjlWbUrBQJcNaCnAhsMAAoJEJYJ0fjlWbUr\n" -"/K8BAJWsa+tOZsJw7w5fz6O0We6Xx4Rt17jHf563G6wMcz9+AQDRsedJ7w4zYzS9\n" -"MFiJQ5aN0NDHMRtDFWAgCunVnJ3OBw==\n" -"=fZa5\n" +"mDMEWG+w/hYJKwYBBAHaRw8BAQdAiq1oStvDYg8ZfFs5DgisYJo8dJxD+C/AA21O\n" +"K/aif0O0GXRvZnVfY29uZmxpY3RAZXhhbXBsZS5jb22IlgQTFggAPhYhBHoJBLaV\n" +"DamYAgoa1L5BwMOl/x88BQJYb7D+AhsDBQkDwmcABQsJCAcCBhUICQoLAgQWAgMB\n" +"Ah4BAheAAAoJEL5BwMOl/x88GvwA/0SxkbLyAcshGm2PRrPsFQsSVAfwaSYFVmS2\n" +"cMVIw1PfAQDclRH1Z4MpufK07ju4qI33o4s0UFpVRBuSxt7A4P2ZD7g4BFhvsP4S\n" +"CisGAQQBl1UBBQEBB0AmVrgaDNJ7K2BSalsRo2EkRJjHGqnp5bBB0tapnF81CQMB\n" +"CAeIeAQYFggAIBYhBHoJBLaVDamYAgoa1L5BwMOl/x88BQJYb7D+AhsMAAoJEL5B\n" +"wMOl/x88OR0BAMq4/vmJUORRTmzjHcv/DDrQB030DSq666rlckGIKTShAPoDXM9N\n" +"0gZK+YzvrinSKZXHmn0aSwmC1/hyPybJPEljBw==\n" +"=p2Oj\n" "-----END PGP PUBLIC KEY BLOCK-----\n"; static const char conflictKey2[] = "-----BEGIN PGP PUBLIC KEY BLOCK-----\n" "\n" -"mDMEXDWgixYJKwYBBAHaRw8BAQdAMWOhumYspcvEOTuesOSN4rvnJVOj/6qOWFTu\n" -"x+wPRra0GXRvZnVfY29uZmxpY3RAZXhhbXBsZS5jb22IkAQTFggAOBYhBA64G88Q\n" -"NPXztj8ID/FhC7tiGbeRBQJcNaCLAhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4BAheA\n" -"AAoJEPFhC7tiGbeRUt4A/2hf4Zgz+TYyfeH/4/ZtyL1JuZggqR1s5UopEx2Aiw10\n" -"AP405KiTd31TJQN8Ru+7bskPu0/mzLZMNkRvBNEdc5kbDLg4BFw1oIsSCisGAQQB\n" -"l1UBBQEBB0B5NtSrx7wDDKgwUe5Rxz0vRkaWLtyE0KbfE77oPy5DGAMBCAeIeAQY\n" -"FggAIBYhBA64G88QNPXztj8ID/FhC7tiGbeRBQJcNaCLAhsMAAoJEPFhC7tiGbeR\n" -"km0BAP8TQwraipqb1pJlLsEgDXeM5Jocz4fuePD78BsOBtORAP9gpCyKXdyJYGlA\n" -"qjmG356yG6pCK9aPckTZ9IViPiHWCw==\n" -"=tn3Q\n" +"mDMEWG+xShYJKwYBBAHaRw8BAQdA567gPEPJRpqKnZjlFJMRNUqruRviYMyygfF6\n" +"6Ok+ygu0GXRvZnVfY29uZmxpY3RAZXhhbXBsZS5jb22IlgQTFggAPhYhBJ5kRh7E\n" +"I98w8kgUcmkAfYFvqqHsBQJYb7FKAhsDBQkDwmcABQsJCAcCBhUICQoLAgQWAgMB\n" +"Ah4BAheAAAoJEGkAfYFvqqHsYR0BAOz8JjYB4VvGkt6noLS3F5TLfsedGwQkBCw5\n" +"znw/vGZsAQD9DSX+ekwdrN56mNO8ISt5uVS7B1ZQtouNBF+nzcwbDbg4BFhvsUoS\n" +"CisGAQQBl1UBBQEBB0BFupW8+Xc1ikab8TJqANjQhvFVh6uLsgcK4g9lZgbGXAMB\n" +"CAeIeAQYFggAIBYhBJ5kRh7EI98w8kgUcmkAfYFvqqHsBQJYb7FKAhsMAAoJEGkA\n" +"fYFvqqHs15ABALdN3uiV/07cJ3RkNb3WPcijGsto+lECDS11dKEwTMFeAQDx+V36\n" +"ocbYC/xEuwi3w45oNqGieazzcD/GBbt8OBk3BA==\n" +"=45IR\n" "-----END PGP PUBLIC KEY BLOCK-----\n"; static const char conflictMsg1[] = "-----BEGIN PGP MESSAGE-----\n" "\n" -"owGbwMvMwCE2jfPij6eRW7UZTwsnMcSYLnT0Ki0uUXD3C1XILFHk6ihlYRDjYJAV\n" -"U2R5t2LPhWNz9tx2D3lqANPEygTSwcDFKQAT+RjG8M9of873hQrMpinBVwKYv+rq\n" -"XGmYW+ZcZJ+133KDq+itzlxGhg3L2X/6Khj+2Hd+He+KnXtunF2wNWxl7849e/Sy\n" -"v6tc+8MBAA==\n" -"=fZLe\n" +"owGbwMvMwCG2z/HA4aX/5W0YT3MlMUTkb2xPSizi6ihlYRDjYJAVU2Sp4mTZNpV3\n" +"5QwmLqkrMLWsTCCFDFycAjCR1vcMf4U0Qrs6qzqfHJ9puGOFduLN2nVmhsumxjBE\n" +"mdw4lr1ehIWR4QdLuNBpe86PGx1PtNXfVAzm/hu+vfjCp5BVNjPTM9L0eAA=\n" +"=MfBD\n" "-----END PGP MESSAGE-----\n"; static const char conflictMsg2[] = "-----BEGIN PGP MESSAGE-----\n" "\n" -"owGbwMvMwCH2MZF7d5Lk9omMp4WTGGJMFwZ4lRaXKLj7hSpklihydZSyMIhxMMiK\n" -"KbLw7ZA+L2Dy9fM2ew5+mCZWJpAOBi5OAZhIUhIjw7bV+xS+cR0quqhmcY2Dl3WW\n" -"8Ufr+rRNufOPyIdoO6nEXGH47/B+E1+oxS6e5f5n7MJ3aHBO+s345sipGV/4f665\n" -"9mmiGjsA\n" -"=8oJA\n" +"owGbwMvMwCGWyVDbmL9q4RvG01xJDBH5GyvS8vO5OkpZGMQ4GGTFFFnmpbjJHVG+\n" +"b/DJQ6QIppaVCaSQgYtTACaySZHhr/SOPrdFJ89KrcwKY5i1XnflXYf2PK76SafK\n" +"tkxXuXzvJAvDX4kCybuqFk3HXCexz2+IrnZ+5X5EqOnuo3ens2cte+uzlhMA\n" +"=BIAi\n" "-----END PGP MESSAGE-----\n"; class TofuInfoTest: public QGpgMETest diff --git a/lang/qt/tests/t-various.cpp b/lang/qt/tests/t-various.cpp index 3880f9c..7545628 100644 --- a/lang/qt/tests/t-various.cpp +++ b/lang/qt/tests/t-various.cpp @@ -34,7 +34,6 @@ #include "config.h" #endif -#include #include #include #include @@ -104,30 +103,27 @@ private Q_SLOTS: if (GpgME::engineInfo(GpgME::GpgEngine).engineVersion() < "2.1.13") { return; } + KeyListJob *job = openpgp()->keyListJob(false, true, true); std::vector keys; - { - QScopedPointer job(openpgp()->keyListJob(false, true, true)); - QVERIFY(!job.isNull()); - GpgME::KeyListResult result = job->exec(QStringList() << QStringLiteral("alfa@example.net"), - false, keys); - QVERIFY (!result.error()); - QVERIFY (keys.size() == 1); - } + GpgME::KeyListResult result = job->exec(QStringList() << QStringLiteral("alfa@example.net"), + false, keys); + delete job; + QVERIFY (!result.error()); + QVERIFY (keys.size() == 1); Key key = keys.front(); QVERIFY (key.numUserIDs() == 3); const char uid[] = "Foo Bar (with comment) "; - { - QScopedPointer ctx(Context::createForProtocol(key.protocol())); - QVERIFY (!ctx.isNull()); - TestPassphraseProvider provider; - ctx->setPassphraseProvider(&provider); - ctx->setPinentryMode(Context::PinentryLoopback); + auto ctx = Context::createForProtocol(key.protocol()); + QVERIFY (ctx); + TestPassphraseProvider provider; + ctx->setPassphraseProvider(&provider); + ctx->setPinentryMode(Context::PinentryLoopback); - QVERIFY(!ctx->addUid(key, uid)); - key.update(); - } + QVERIFY(!ctx->addUid(key, uid)); + delete ctx; + key.update(); QVERIFY (key.numUserIDs() == 4); bool id_found = false;; @@ -140,12 +136,10 @@ private Q_SLOTS: } QVERIFY (id_found); - { - QScopedPointer ctx(Context::createForProtocol(key.protocol())); - QVERIFY (!ctx.isNull()); - QVERIFY (!ctx->revUid(key, uid)); - key.update(); - } + ctx = Context::createForProtocol(key.protocol()); + QVERIFY (!ctx->revUid(key, uid)); + delete ctx; + key.update(); bool id_revoked = false;; for (const auto &u: key.userIDs()) { diff --git a/m4/ax_python_devel.m4 b/m4/ax_python_devel.m4 index 318b089..b990d5b 100644 --- a/m4/ax_python_devel.m4 +++ b/m4/ax_python_devel.m4 @@ -137,7 +137,7 @@ variable to configure. See ``configure --help'' for reference. # AC_MSG_CHECKING([for the distutils Python package]) ac_distutils_result=`$PYTHON -c "import distutils" 2>&1` - if test $? -eq 0; then + if test -z "$ac_distutils_result"; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) diff --git a/src/engine-gpg.c b/src/engine-gpg.c index 425fa73..bfe7d13 100644 --- a/src/engine-gpg.c +++ b/src/engine-gpg.c @@ -968,7 +968,7 @@ build_argv (engine_gpg_t gpg, const char *pgmname) == -1) { int saved_errno = errno; - free_fd_data_map (fd_data_map); + free (fd_data_map); free_argv (argv); return gpg_error (saved_errno); } @@ -978,10 +978,10 @@ build_argv (engine_gpg_t gpg, const char *pgmname) close_notify_handler, gpg)) { - close (fds[0]); - close (fds[1]); - free_fd_data_map (fd_data_map); - free_argv (argv); + /* We leak fd_data_map and the fds. This is not easy + to avoid and given that we reach this here only + after a malloc failure for a small object, it is + probably better not to do anything. */ return gpg_error (GPG_ERR_GENERAL); } /* If the data_type is FD, we have to do a dup2 here. */ @@ -1024,7 +1024,7 @@ build_argv (engine_gpg_t gpg, const char *pgmname) if (!argv[argc]) { int saved_err = gpg_error_from_syserror (); - free_fd_data_map (fd_data_map); + free (fd_data_map); free_argv (argv); return saved_err; } @@ -1049,7 +1049,7 @@ build_argv (engine_gpg_t gpg, const char *pgmname) if (!argv[argc]) { int saved_err = gpg_error_from_syserror (); - free_fd_data_map (fd_data_map); + free (fd_data_map); free_argv (argv); return saved_err; } @@ -1104,9 +1104,6 @@ read_status (engine_gpg_t gpg) buffer = realloc (buffer, bufsize); if (!buffer) return gpg_error_from_syserror (); - /* Update buffer and bufsize here to prevent memory leaks. */ - gpg->status.buffer = buffer; - gpg->status.bufsize = bufsize; } nread = _gpgme_io_read (gpg->status.fd[0], @@ -1257,6 +1254,8 @@ read_status (engine_gpg_t gpg) } /* Update the gpg object. */ + gpg->status.bufsize = bufsize; + gpg->status.buffer = buffer; gpg->status.readpos = readpos; return 0; } @@ -1296,9 +1295,6 @@ read_colon_line (engine_gpg_t gpg) buffer = realloc (buffer, bufsize); if (!buffer) return gpg_error_from_syserror (); - /* Prevent memory leaks. */ - gpg->colon.buffer = buffer; - gpg->colon.bufsize = bufsize; } nread = _gpgme_io_read (gpg->colon.fd[0], buffer+readpos, bufsize-readpos); @@ -1378,6 +1374,8 @@ read_colon_line (engine_gpg_t gpg) } /* Update the gpg object. */ + gpg->colon.bufsize = bufsize; + gpg->colon.buffer = buffer; gpg->colon.readpos = readpos; return 0; } diff --git a/src/engine-gpgsm.c b/src/engine-gpgsm.c index 4247a44..e337fed 100644 --- a/src/engine-gpgsm.c +++ b/src/engine-gpgsm.c @@ -1366,10 +1366,8 @@ gpgsm_export (void *engine, const char *pattern, gpgme_export_mode_t mode, gpgsm->output_cb.data = keydata; err = gpgsm_set_fd (gpgsm, OUTPUT_FD, use_armor ? "--armor" : map_data_enc (gpgsm->output_cb.data)); - if (err) { - free (cmd); + if (err) return err; - } gpgsm_clear_fd (gpgsm, INPUT_FD); gpgsm_clear_fd (gpgsm, MESSAGE_FD); gpgsm->inline_data = NULL; @@ -1469,10 +1467,8 @@ gpgsm_export_ext (void *engine, const char *pattern[], gpgme_export_mode_t mode, gpgsm->output_cb.data = keydata; err = gpgsm_set_fd (gpgsm, OUTPUT_FD, use_armor ? "--armor" : map_data_enc (gpgsm->output_cb.data)); - if (err) { - free (line); + if (err) return err; - } gpgsm_clear_fd (gpgsm, INPUT_FD); gpgsm_clear_fd (gpgsm, MESSAGE_FD); gpgsm->inline_data = NULL; diff --git a/src/engine.c b/src/engine.c index 36c8952..28ba9fd 100644 --- a/src/engine.c +++ b/src/engine.c @@ -459,9 +459,7 @@ _gpgme_set_engine_info (gpgme_engine_info_t info, gpgme_protocol_t proto, if (!new_version) { free (new_file_name); - if (new_home_dir) - free (new_home_dir); - return gpg_error_from_syserror (); + free (new_home_dir); } } diff --git a/src/gpgme-config.in b/src/gpgme-config.in index 89a4b41..a4d152e 100644 --- a/src/gpgme-config.in +++ b/src/gpgme-config.in @@ -22,12 +22,12 @@ cflags="-I@includedir@" libs="-L@libdir@" # Network libraries. -#assuan_cflags="@LIBASSUAN_CFLAGS@" -#assuan_libs="@LIBASSUAN_LIBS@" +assuan_cflags="@LIBASSUAN_CFLAGS@" +assuan_libs="@LIBASSUAN_LIBS@" # Configure libgpg-error. gpg_error_cflags="@GPG_ERROR_CFLAGS@" -#gpg_error_libs="@GPG_ERROR_LIBS@" +gpg_error_libs="@GPG_ERROR_LIBS@" # Configure thread packages. thread_modules="" @@ -45,10 +45,6 @@ libs_glib="@GLIB_LIBS@" cflags_glib="@GLIB_CFLAGS@" with_glib= -if test "0@NEED__FILE_OFFSET_BITS@" -gt "0" ; then - cflags_lfs="-D_FILE_OFFSET_BITS=@NEED__FILE_OFFSET_BITS@" -fi - output="" usage() @@ -112,9 +108,6 @@ while test $# -gt 0; do exit 0 ;; --cflags) - if test "x$cflags_lfs" != "x"; then - output="$output $cflags_lfs" - fi result= tmp_c= tmp_g= diff --git a/src/gpgme-tool.c b/src/gpgme-tool.c index 0393844..3e2dc78 100644 --- a/src/gpgme-tool.c +++ b/src/gpgme-tool.c @@ -2330,8 +2330,8 @@ _cmd_decrypt_verify (assuan_context_t ctx, char *line, int verify) char *inp_fn; assuan_fd_t out_fd; char *out_fn; - gpgme_data_t inp_data = NULL; - gpgme_data_t out_data = NULL; + gpgme_data_t inp_data; + gpgme_data_t out_data; (void)line; @@ -2346,18 +2346,13 @@ _cmd_decrypt_verify (assuan_context_t ctx, char *line, int verify) err = server_data_obj (inp_fd, inp_fn, 0, server->input_enc, &inp_data, &server->input_stream); - if (err) { - if (inp_data) - gpgme_data_release (inp_data); + if (err) return err; - } err = server_data_obj (out_fd, out_fn, 1, server->output_enc, &out_data, &server->output_stream); if (err) { gpgme_data_release (inp_data); - if (out_data) - gpgme_data_release (out_data); return err; } @@ -2430,11 +2425,8 @@ _cmd_sign_encrypt (assuan_context_t ctx, char *line, int sign) { err = server_data_obj (inp_fd, inp_fn, 0, server->input_enc, &inp_data, &server->input_stream); - if (err) { - if (inp_data) - gpgme_data_release (inp_data); + if (err) return err; - } } if (out_fd != ASSUAN_INVALID_FD || out_fn) { @@ -2443,8 +2435,6 @@ _cmd_sign_encrypt (assuan_context_t ctx, char *line, int sign) if (err) { gpgme_data_release (inp_data); - if (out_data) - gpgme_data_release (out_data); return err; } } @@ -2509,8 +2499,8 @@ cmd_sign (assuan_context_t ctx, char *line) char *inp_fn; assuan_fd_t out_fd; char *out_fn; - gpgme_data_t inp_data = NULL; - gpgme_data_t out_data = NULL; + gpgme_data_t inp_data; + gpgme_data_t out_data; gpgme_sig_mode_t mode = GPGME_SIG_MODE_NORMAL; if (strstr (line, "--clear")) @@ -2529,18 +2519,13 @@ cmd_sign (assuan_context_t ctx, char *line) err = server_data_obj (inp_fd, inp_fn, 0, server->input_enc, &inp_data, &server->input_stream); - if (err) { - if (inp_data) - gpgme_data_release (inp_data); + if (err) return err; - } err = server_data_obj (out_fd, out_fn, 1, server->output_enc, &out_data, &server->output_stream); if (err) { gpgme_data_release (inp_data); - if (out_data) - gpgme_data_release (out_data); return err; } @@ -2572,7 +2557,7 @@ cmd_verify (assuan_context_t ctx, char *line) char *inp_fn; char *msg_fn; char *out_fn; - gpgme_data_t inp_data = NULL; + gpgme_data_t inp_data; gpgme_data_t msg_data = NULL; gpgme_data_t out_data = NULL; @@ -2589,11 +2574,8 @@ cmd_verify (assuan_context_t ctx, char *line) err = server_data_obj (inp_fd, inp_fn, 0, server->input_enc, &inp_data, &server->input_stream); - if (err) { - if (inp_data) - gpgme_data_release (inp_data); + if (err) return err; - } if (msg_fd != ASSUAN_INVALID_FD || msg_fn) { err = server_data_obj (msg_fd, msg_fn, 0, server->message_enc, &msg_data, @@ -2601,8 +2583,6 @@ cmd_verify (assuan_context_t ctx, char *line) if (err) { gpgme_data_release (inp_data); - if (msg_data) - gpgme_data_release (msg_data); return err; } } @@ -2614,8 +2594,6 @@ cmd_verify (assuan_context_t ctx, char *line) { gpgme_data_release (inp_data); gpgme_data_release (msg_data); - if (out_data) - gpgme_data_release (out_data); return err; } } @@ -2656,7 +2634,7 @@ cmd_import (assuan_context_t ctx, char *line) gpg_error_t err; assuan_fd_t inp_fd; char *inp_fn; - gpgme_data_t inp_data = NULL; + gpgme_data_t inp_data; inp_fd = server->input_fd; inp_fn = server->input_filename; @@ -2665,11 +2643,8 @@ cmd_import (assuan_context_t ctx, char *line) err = server_data_obj (inp_fd, inp_fn, 0, server->input_enc, &inp_data, &server->input_stream); - if (err) { - if (inp_data) - gpgme_data_release (inp_data); + if (err) return err; - } err = gt_import (server->gt, inp_data); @@ -2693,7 +2668,7 @@ cmd_export (assuan_context_t ctx, char *line) gpg_error_t err; assuan_fd_t out_fd; char *out_fn; - gpgme_data_t out_data = NULL; + gpgme_data_t out_data; gpgme_export_mode_t mode = 0; const char *pattern[2]; @@ -2703,11 +2678,8 @@ cmd_export (assuan_context_t ctx, char *line) return GPG_ERR_ASS_NO_OUTPUT; err = server_data_obj (out_fd, out_fn, 1, server->output_enc, &out_data, &server->output_stream); - if (err) { - if (out_data) - gpgme_data_release (out_data); + if (err) return err; - } if (has_option (line, "--extern")) mode |= GPGME_EXPORT_MODE_EXTERN; @@ -2761,7 +2733,7 @@ cmd_genkey (assuan_context_t ctx, char *line) char *inp_fn; assuan_fd_t out_fd; char *out_fn; - gpgme_data_t inp_data = NULL; + gpgme_data_t inp_data; gpgme_data_t out_data = NULL; gpgme_data_t parms_data = NULL; const char *parms; @@ -2777,11 +2749,8 @@ cmd_genkey (assuan_context_t ctx, char *line) err = server_data_obj (inp_fd, inp_fn, 0, server->input_enc, &inp_data, &server->input_stream); - if (err) { - if (inp_data) - gpgme_data_release (inp_data); + if (err) return err; - } if (out_fd != ASSUAN_INVALID_FD || out_fn) { err = server_data_obj (out_fd, out_fn, 1, server->output_enc, &out_data, @@ -2789,8 +2758,6 @@ cmd_genkey (assuan_context_t ctx, char *line) if (err) { gpgme_data_release (inp_data); - if (out_data) - gpgme_data_release (out_data); return err; } } @@ -2828,7 +2795,6 @@ cmd_genkey (assuan_context_t ctx, char *line) } err = gt_genkey (server->gt, parms, out_data, NULL); - free (parms); server_reset_fds (server); @@ -3002,7 +2968,7 @@ cmd_getauditlog (assuan_context_t ctx, char *line) gpg_error_t err; assuan_fd_t out_fd; char *out_fn; - gpgme_data_t out_data = NULL; + gpgme_data_t out_data; unsigned int flags = 0; out_fd = server->output_fd; @@ -3011,11 +2977,8 @@ cmd_getauditlog (assuan_context_t ctx, char *line) return GPG_ERR_ASS_NO_OUTPUT; err = server_data_obj (out_fd, out_fn, 1, server->output_enc, &out_data, &server->output_stream); - if (err) { - if (out_data) - gpgme_data_release (out_data); + if (err) return err; - } if (strstr (line, "--html")) flags |= GPGME_AUDITLOG_HTML; @@ -3148,7 +3111,7 @@ cmd_identify (assuan_context_t ctx, char *line) gpg_error_t err; assuan_fd_t inp_fd; char *inp_fn; - gpgme_data_t inp_data = NULL; + gpgme_data_t inp_data; (void)line; @@ -3159,11 +3122,8 @@ cmd_identify (assuan_context_t ctx, char *line) err = server_data_obj (inp_fd, inp_fn, 0, server->input_enc, &inp_data, &server->input_stream); - if (err) { - if (inp_data) - gpgme_data_release (inp_data); + if (err) return err; - } err = gt_identify (server->gt, inp_data); @@ -3199,11 +3159,8 @@ cmd_spawn (assuan_context_t ctx, char *line) { err = server_data_obj (inp_fd, inp_fn, 0, server->input_enc, &inp_data, &server->input_stream); - if (err) { - if (inp_data) - gpgme_data_release (inp_data); + if (err) return err; - } } if (out_fd != ASSUAN_INVALID_FD || out_fn) { @@ -3212,8 +3169,6 @@ cmd_spawn (assuan_context_t ctx, char *line) if (err) { gpgme_data_release (inp_data); - if (out_data) - gpgme_data_release (out_data); return err; } } diff --git a/src/op-support.c b/src/op-support.c index 8269ce2..817c569 100644 --- a/src/op-support.c +++ b/src/op-support.c @@ -398,13 +398,7 @@ _gpgme_parse_plaintext (char *args, char **filenamep) /* Parse a FAILURE status line and return the error code. ARGS is - * modified to contain the location part. Note that for now we ignore - * failure codes with a location of gpg-exit; they are too trouble - * some. Instead we should eventually record that error in the - * context and provide a function to return a fuller error - * description; this could then also show the location of the error - * (e.g. "option- parser") to make it easier for the user to detect - * the actual error. */ + modified to contain the location part. */ gpgme_error_t _gpgme_parse_failure (char *args) { @@ -422,8 +416,6 @@ _gpgme_parse_failure (char *args) *where = '\0'; where = args; - if (!strcmp (where, "gpg-exit")) - return 0; return atoi (which); } diff --git a/tests/gpg/t-import.c b/tests/gpg/t-import.c index ddf9420..89a5815 100644 --- a/tests/gpg/t-import.c +++ b/tests/gpg/t-import.c @@ -212,7 +212,7 @@ main (int argc, char *argv[]) { gpgme_ctx_t ctx; gpgme_error_t err; - gpgme_data_t in = NULL; + gpgme_data_t in; gpgme_import_result_t result; char *pubkey_1_asc = make_filename ("pubkey-1.asc"); char *seckey_1_asc = make_filename ("seckey-1.asc"); @@ -235,7 +235,6 @@ main (int argc, char *argv[]) check_result (result, "ADAB7FCC1F4DE2616ECFA402AF82244F9CD9FD55", 0); gpgme_data_release (in); - in = NULL; /* Make Coverity happy. */ err = gpgme_data_new_from_file (&in, seckey_1_asc, 1); free (seckey_1_asc); fail_if_err (err); diff --git a/tests/gpg/t-trustlist.c b/tests/gpg/t-trustlist.c index c4b64fd..eeab85e 100644 --- a/tests/gpg/t-trustlist.c +++ b/tests/gpg/t-trustlist.c @@ -39,7 +39,7 @@ main (int argc, char *argv[]) { gpgme_ctx_t ctx; gpgme_error_t err; - gpgme_trust_item_t item = NULL; + gpgme_trust_item_t item; (void)argc; (void)argv; @@ -58,7 +58,6 @@ main (int argc, char *argv[]) item->level, item->keyid, item->type, item->owner_trust, item->validity, item->name); gpgme_trust_item_unref (item); - item = NULL; /* Make Coverity happy. */ } if (gpgme_err_code (err) != GPG_ERR_EOF) fail_if_err (err); diff --git a/tests/gpgsm/cms-keylist.c b/tests/gpgsm/cms-keylist.c index 282f45e..ffe17e2 100644 --- a/tests/gpgsm/cms-keylist.c +++ b/tests/gpgsm/cms-keylist.c @@ -45,7 +45,7 @@ main (int argc, char **argv) { gpgme_error_t err; gpgme_ctx_t ctx; - gpgme_key_t key = NULL; + gpgme_key_t key; gpgme_keylist_result_t result; if (argc) @@ -107,7 +107,6 @@ main (int argc, char **argv) putchar ('\n'); gpgme_key_unref (key); - key = NULL; /* Make Coverity happy. */ } if (gpgme_err_code (err) != GPG_ERR_EOF) fail_if_err (err); diff --git a/tests/gpgsm/t-import.c b/tests/gpgsm/t-import.c index 38feca6..a8dfcca 100644 --- a/tests/gpgsm/t-import.c +++ b/tests/gpgsm/t-import.c @@ -142,7 +142,7 @@ main (void) { gpgme_ctx_t ctx; gpgme_error_t err; - gpgme_data_t in = NULL; + gpgme_data_t in; gpgme_import_result_t result; char *cert_1 = make_filename ("cert_dfn_pca01.der"); char *cert_2 = make_filename ("cert_dfn_pca15.der"); @@ -164,7 +164,6 @@ main (void) check_result (result, "DFA56FB5FC41E3A8921F77AD1622EEFD9152A5AD", 1, 1); gpgme_data_release (in); - in = NULL; /* Make Coverity happy. */ err = gpgme_data_new_from_file (&in, cert_2, 1); free (cert_2); fail_if_err (err); diff --git a/tests/gpgsm/t-keylist.c b/tests/gpgsm/t-keylist.c index 46bd742..314109c 100644 --- a/tests/gpgsm/t-keylist.c +++ b/tests/gpgsm/t-keylist.c @@ -85,7 +85,7 @@ main (void) { gpgme_error_t err; gpgme_ctx_t ctx; - gpgme_key_t key = NULL; + gpgme_key_t key; gpgme_keylist_result_t result; int i = 0; @@ -111,7 +111,6 @@ main (void) fprintf (stderr, "Warning: Skipping unknown key %s\n", key->subkeys->fpr); gpgme_key_unref (key); - key = NULL; /* Make Coverity happy. */ continue; } else @@ -366,7 +365,6 @@ main (void) gpgme_key_unref (key); - key = NULL; /* Make Coverity happy. */ i++; } if (gpgme_err_code (err) != GPG_ERR_EOF) diff --git a/tests/run-identify.c b/tests/run-identify.c index e55900c..9361fa2 100644 --- a/tests/run-identify.c +++ b/tests/run-identify.c @@ -77,7 +77,7 @@ main (int argc, char **argv) int last_argc = -1; gpgme_error_t err; int anyerr = 0; - gpgme_data_t data = NULL; + gpgme_data_t data; gpgme_data_type_t dt; if (argc) @@ -122,7 +122,6 @@ main (int argc, char **argv) anyerr = 1; printf ("%s: %s\n", *argv, data_type_to_string (dt)); gpgme_data_release (data); - data = NULL; /* Make Coverity happy. */ } } diff --git a/tests/run-import.c b/tests/run-import.c index 3441971..081c0fa 100644 --- a/tests/run-import.c +++ b/tests/run-import.c @@ -58,7 +58,7 @@ main (int argc, char **argv) int url_mode = 0; int nul_mode = 0; gpgme_import_result_t impres; - gpgme_data_t data = NULL; + gpgme_data_t data; if (argc) { argc--; argv++; } @@ -122,7 +122,6 @@ main (int argc, char **argv) print_import_result (impres); gpgme_data_release (data); - data = NULL; /* Make Coverity happy. */ } gpgme_release (ctx);