From ecbf52b61fa8d68a4d82b99b83968e9b6e8f1cd1 Mon Sep 17 00:00:00 2001 From: Packit Date: Aug 20 2020 10:32:35 +0000 Subject: Apply patch gpgme-1.10.0-fix-resource-leaks.patch patch_name: gpgme-1.10.0-fix-resource-leaks.patch location_in_specfile: 5 present_in_specfile: true --- diff --git a/lang/cpp/src/context.cpp b/lang/cpp/src/context.cpp index 135e4d5..11b200b 100644 --- a/lang/cpp/src/context.cpp +++ b/lang/cpp/src/context.cpp @@ -222,6 +222,7 @@ Context *Context::createForProtocol(Protocol proto) } break; default: + gpgme_release(ctx); return 0; } @@ -267,6 +268,7 @@ 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 32ca561..5b41a64 100644 --- a/lang/cpp/src/data.cpp +++ b/lang/cpp/src/data.cpp @@ -244,6 +244,7 @@ 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 492326b..9de56a0 100644 --- a/lang/python/gpgme.i +++ b/lang/python/gpgme.i @@ -43,7 +43,7 @@ { encodedInput = PyUnicode_AsUTF8String($input); if (encodedInput == NULL) - return NULL; + SWIG_fail; $1 = PyBytes_AsString(encodedInput); } else if (PyBytes_Check($input)) @@ -52,22 +52,25 @@ PyErr_Format(PyExc_TypeError, "arg %d: expected str, bytes, or None, got %s", $argnum, $input->ob_type->tp_name); - return NULL; + SWIG_fail; } } %typemap(freearg) const char * { Py_XDECREF(encodedInput$argnum); } +%typemap(arginit) const char *[] { + $1 = NULL; +} + /* Likewise for a list of strings. */ -%typemap(in) const char *[] (void *vector = NULL, - size_t size, +%typemap(in) const char *[] (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 **) (vector = malloc((size+1) * sizeof(char *))); + $1 = (char **) malloc((size+1) * sizeof(char *)); pyVector = calloc(sizeof *pyVector, size); for (i = 0; i < size; i++) { @@ -76,12 +79,7 @@ { pyVector[i] = PyUnicode_AsUTF8String(o); if (pyVector[i] == NULL) - { - free(vector); - for (j = 0; j < i; j++) - Py_XDECREF(pyVector[j]); - return NULL; - } + SWIG_fail; $1[i] = PyBytes_AsString(pyVector[i]); } else if (PyString_Check(o)) @@ -91,8 +89,7 @@ "arg %d: list must contain only str or bytes, got %s " "at position %d", $argnum, o->ob_type->tp_name, i); - free($1); - return NULL; + SWIG_fail; } } $1[i] = NULL; @@ -100,14 +97,17 @@ PyErr_Format(PyExc_TypeError, "arg %d: expected a list of str or bytes, got %s", $argnum, $input->ob_type->tp_name); - return NULL; + SWIG_fail; } } %typemap(freearg) const char *[] { - size_t i; - free(vector$argnum); - for (i = 0; i < size$argnum; i++) - Py_XDECREF(pyVector$argnum[i]); + 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); } /* 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); - return NULL; + SWIG_fail; } if((numb = PySequence_Length($input)) != 0) { $1 = (gpgme_key_t*)malloc((numb+1)*sizeof(gpgme_key_t)); @@ -142,8 +142,7 @@ "arg %d: list must contain only gpgme_key_ts, got %s " "at position %d", $argnum, pypointer->ob_type->tp_name, i); - free($1); - return NULL; + SWIG_fail; } Py_DECREF(pypointer); } @@ -169,7 +168,7 @@ pypointer = _gpg_obj2gpgme_data_t($input, $argnum, &wrapper, &bytesio, &view); if (pypointer == NULL) - return NULL; + SWIG_fail; have_view = !! view.obj; /* input = $input, 1 = $1, 1_descriptor = $1_descriptor */ @@ -179,7 +178,7 @@ if ((SWIG_ConvertPtr(pypointer,(void **) &$1, $1_descriptor, SWIG_POINTER_EXCEPTION | $disown )) == -1) { Py_DECREF(pypointer); - return NULL; + SWIG_fail; } Py_DECREF(pypointer); } @@ -336,6 +335,11 @@ 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) { { @@ -349,12 +353,12 @@ else { PyErr_SetString(PyExc_TypeError, "Numeric argument expected"); - return NULL; + SWIG_fail; } if (tmp$argnum < 0) { PyErr_SetString(PyExc_ValueError, "Positive integer expected"); - return NULL; + SWIG_fail; } $2 = (size_t) tmp$argnum; $1 = ($1_ltype) malloc($2+1); @@ -363,11 +367,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 */ - free($1); + if ($1) free($1); return PyErr_SetFromErrno(PyExc_RuntimeError); } $result = PyBytes_FromStringAndSize($1,result); - free($1); + if ($1) free($1); } /* For gpgme_data_write, but should be universal. */ @@ -380,11 +384,11 @@ { encodedInput = PyUnicode_AsUTF8String($input); if (encodedInput == NULL) - return NULL; + SWIG_fail; if (PyBytes_AsStringAndSize(encodedInput, (char **) &$1, &ssize) == -1) { Py_DECREF(encodedInput); - return NULL; + SWIG_fail; } } else if (PyBytes_Check($input)) @@ -393,7 +397,7 @@ PyErr_Format(PyExc_TypeError, "arg %d: expected str, bytes, or None, got %s", $argnum, $input->ob_type->tp_name); - return NULL; + SWIG_fail; } if (! $1) @@ -422,8 +426,17 @@ 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); } } @@ -436,6 +449,8 @@ 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); } @@ -459,22 +474,28 @@ wrapresult(gpgme_vfs_mount_result_t, "VFSMountResult") } $result = PyList_New(size); if ($result == NULL) - return NULL; /* raise */ + SWIG_fail; /* 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); - return NULL; /* raise */ + SWIG_fail; /* 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); - return NULL; /* raise */ + SWIG_fail; /* raise */ } PyList_SetItem($result, i, o); } diff --git a/lang/qt/tests/t-various.cpp b/lang/qt/tests/t-various.cpp index 7545628..3880f9c 100644 --- a/lang/qt/tests/t-various.cpp +++ b/lang/qt/tests/t-various.cpp @@ -34,6 +34,7 @@ #include "config.h" #endif +#include #include #include #include @@ -103,27 +104,30 @@ private Q_SLOTS: if (GpgME::engineInfo(GpgME::GpgEngine).engineVersion() < "2.1.13") { return; } - KeyListJob *job = openpgp()->keyListJob(false, true, true); std::vector keys; - GpgME::KeyListResult result = job->exec(QStringList() << QStringLiteral("alfa@example.net"), - false, keys); - delete job; - QVERIFY (!result.error()); - QVERIFY (keys.size() == 1); + { + 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); + } Key key = keys.front(); QVERIFY (key.numUserIDs() == 3); const char uid[] = "Foo Bar (with comment) "; - auto ctx = Context::createForProtocol(key.protocol()); - QVERIFY (ctx); - TestPassphraseProvider provider; - ctx->setPassphraseProvider(&provider); - ctx->setPinentryMode(Context::PinentryLoopback); + { + QScopedPointer ctx(Context::createForProtocol(key.protocol())); + QVERIFY (!ctx.isNull()); + TestPassphraseProvider provider; + ctx->setPassphraseProvider(&provider); + ctx->setPinentryMode(Context::PinentryLoopback); - QVERIFY(!ctx->addUid(key, uid)); - delete ctx; - key.update(); + QVERIFY(!ctx->addUid(key, uid)); + key.update(); + } QVERIFY (key.numUserIDs() == 4); bool id_found = false;; @@ -136,10 +140,12 @@ private Q_SLOTS: } QVERIFY (id_found); - ctx = Context::createForProtocol(key.protocol()); - QVERIFY (!ctx->revUid(key, uid)); - delete ctx; - key.update(); + { + QScopedPointer ctx(Context::createForProtocol(key.protocol())); + QVERIFY (!ctx.isNull()); + QVERIFY (!ctx->revUid(key, uid)); + key.update(); + } bool id_revoked = false;; for (const auto &u: key.userIDs()) { diff --git a/src/engine-gpg.c b/src/engine-gpg.c index bfe7d13..425fa73 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); + free_fd_data_map (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)) { - /* 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. */ + close (fds[0]); + close (fds[1]); + free_fd_data_map (fd_data_map); + free_argv (argv); 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); + free_fd_data_map (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); + free_fd_data_map (fd_data_map); free_argv (argv); return saved_err; } @@ -1104,6 +1104,9 @@ 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], @@ -1254,8 +1257,6 @@ read_status (engine_gpg_t gpg) } /* Update the gpg object. */ - gpg->status.bufsize = bufsize; - gpg->status.buffer = buffer; gpg->status.readpos = readpos; return 0; } @@ -1295,6 +1296,9 @@ 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); @@ -1374,8 +1378,6 @@ 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 e337fed..4247a44 100644 --- a/src/engine-gpgsm.c +++ b/src/engine-gpgsm.c @@ -1366,8 +1366,10 @@ 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) + if (err) { + free (cmd); return err; + } gpgsm_clear_fd (gpgsm, INPUT_FD); gpgsm_clear_fd (gpgsm, MESSAGE_FD); gpgsm->inline_data = NULL; @@ -1467,8 +1469,10 @@ 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) + if (err) { + free (line); 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 28ba9fd..36c8952 100644 --- a/src/engine.c +++ b/src/engine.c @@ -459,7 +459,9 @@ _gpgme_set_engine_info (gpgme_engine_info_t info, gpgme_protocol_t proto, if (!new_version) { free (new_file_name); - free (new_home_dir); + if (new_home_dir) + free (new_home_dir); + return gpg_error_from_syserror (); } } diff --git a/src/gpgme-tool.c b/src/gpgme-tool.c index 3e2dc78..0393844 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; - gpgme_data_t out_data; + gpgme_data_t inp_data = NULL; + gpgme_data_t out_data = NULL; (void)line; @@ -2346,13 +2346,18 @@ _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 (err) { + if (inp_data) + gpgme_data_release (inp_data); 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; } @@ -2425,8 +2430,11 @@ _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 (err) { + if (inp_data) + gpgme_data_release (inp_data); return err; + } } if (out_fd != ASSUAN_INVALID_FD || out_fn) { @@ -2435,6 +2443,8 @@ _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; } } @@ -2499,8 +2509,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; - gpgme_data_t out_data; + gpgme_data_t inp_data = NULL; + gpgme_data_t out_data = NULL; gpgme_sig_mode_t mode = GPGME_SIG_MODE_NORMAL; if (strstr (line, "--clear")) @@ -2519,13 +2529,18 @@ 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 (err) { + if (inp_data) + gpgme_data_release (inp_data); 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; } @@ -2557,7 +2572,7 @@ cmd_verify (assuan_context_t ctx, char *line) char *inp_fn; char *msg_fn; char *out_fn; - gpgme_data_t inp_data; + gpgme_data_t inp_data = NULL; gpgme_data_t msg_data = NULL; gpgme_data_t out_data = NULL; @@ -2574,8 +2589,11 @@ 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 (err) { + if (inp_data) + gpgme_data_release (inp_data); return err; + } if (msg_fd != ASSUAN_INVALID_FD || msg_fn) { err = server_data_obj (msg_fd, msg_fn, 0, server->message_enc, &msg_data, @@ -2583,6 +2601,8 @@ 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; } } @@ -2594,6 +2614,8 @@ 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; } } @@ -2634,7 +2656,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; + gpgme_data_t inp_data = NULL; inp_fd = server->input_fd; inp_fn = server->input_filename; @@ -2643,8 +2665,11 @@ 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 (err) { + if (inp_data) + gpgme_data_release (inp_data); return err; + } err = gt_import (server->gt, inp_data); @@ -2668,7 +2693,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; + gpgme_data_t out_data = NULL; gpgme_export_mode_t mode = 0; const char *pattern[2]; @@ -2678,8 +2703,11 @@ 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 (err) { + if (out_data) + gpgme_data_release (out_data); return err; + } if (has_option (line, "--extern")) mode |= GPGME_EXPORT_MODE_EXTERN; @@ -2733,7 +2761,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; + gpgme_data_t inp_data = NULL; gpgme_data_t out_data = NULL; gpgme_data_t parms_data = NULL; const char *parms; @@ -2749,8 +2777,11 @@ 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 (err) { + if (inp_data) + gpgme_data_release (inp_data); return err; + } if (out_fd != ASSUAN_INVALID_FD || out_fn) { err = server_data_obj (out_fd, out_fn, 1, server->output_enc, &out_data, @@ -2758,6 +2789,8 @@ 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; } } @@ -2795,6 +2828,7 @@ cmd_genkey (assuan_context_t ctx, char *line) } err = gt_genkey (server->gt, parms, out_data, NULL); + free (parms); server_reset_fds (server); @@ -2968,7 +3002,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; + gpgme_data_t out_data = NULL; unsigned int flags = 0; out_fd = server->output_fd; @@ -2977,8 +3011,11 @@ 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 (err) { + if (out_data) + gpgme_data_release (out_data); return err; + } if (strstr (line, "--html")) flags |= GPGME_AUDITLOG_HTML; @@ -3111,7 +3148,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; + gpgme_data_t inp_data = NULL; (void)line; @@ -3122,8 +3159,11 @@ 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 (err) { + if (inp_data) + gpgme_data_release (inp_data); return err; + } err = gt_identify (server->gt, inp_data); @@ -3159,8 +3199,11 @@ 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 (err) { + if (inp_data) + gpgme_data_release (inp_data); return err; + } } if (out_fd != ASSUAN_INVALID_FD || out_fn) { @@ -3169,6 +3212,8 @@ 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/tests/gpg/t-import.c b/tests/gpg/t-import.c index 89a5815..ddf9420 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; + gpgme_data_t in = NULL; gpgme_import_result_t result; char *pubkey_1_asc = make_filename ("pubkey-1.asc"); char *seckey_1_asc = make_filename ("seckey-1.asc"); @@ -235,6 +235,7 @@ 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 eeab85e..c4b64fd 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; + gpgme_trust_item_t item = NULL; (void)argc; (void)argv; @@ -58,6 +58,7 @@ 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 ffe17e2..282f45e 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; + gpgme_key_t key = NULL; gpgme_keylist_result_t result; if (argc) @@ -107,6 +107,7 @@ 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 a8dfcca..38feca6 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; + gpgme_data_t in = NULL; gpgme_import_result_t result; char *cert_1 = make_filename ("cert_dfn_pca01.der"); char *cert_2 = make_filename ("cert_dfn_pca15.der"); @@ -164,6 +164,7 @@ 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 314109c..46bd742 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; + gpgme_key_t key = NULL; gpgme_keylist_result_t result; int i = 0; @@ -111,6 +111,7 @@ main (void) fprintf (stderr, "Warning: Skipping unknown key %s\n", key->subkeys->fpr); gpgme_key_unref (key); + key = NULL; /* Make Coverity happy. */ continue; } else @@ -365,6 +366,7 @@ 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 9361fa2..e55900c 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; + gpgme_data_t data = NULL; gpgme_data_type_t dt; if (argc) @@ -122,6 +122,7 @@ 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 081c0fa..3441971 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; + gpgme_data_t data = NULL; if (argc) { argc--; argv++; } @@ -122,6 +122,7 @@ main (int argc, char **argv) print_import_result (impres); gpgme_data_release (data); + data = NULL; /* Make Coverity happy. */ } gpgme_release (ctx);