Compare commits
No commits in common. 'c9' and 'i10cs' have entirely different histories.
@ -1 +1,2 @@
|
||||
SOURCES/gpgme-1.15.1.licenses.tar.bz2
|
||||
SOURCES/gpgme-1.23.2.tar.bz2
|
||||
SOURCES/gpgme-1.23.2.tar.bz2.sig
|
||||
|
@ -1 +1,2 @@
|
||||
29011c97c5e2a5e42234e6051f12c16660c89243 SOURCES/gpgme-1.15.1.licenses.tar.bz2
|
||||
b3a938939a9fb2182684aa9ba094c8e8ecd6167b SOURCES/gpgme-1.23.2.tar.bz2
|
||||
bab786f29527fddab32dc4afe57c726c7437d45d SOURCES/gpgme-1.23.2.tar.bz2.sig
|
||||
|
@ -0,0 +1,12 @@
|
||||
diff --git a/lang/python/Makefile.in b/lang/python/Makefile.in
|
||||
index c0fc091..d567ecb 100644
|
||||
--- a/lang/python/Makefile.in
|
||||
+++ b/lang/python/Makefile.in
|
||||
@@ -802,6 +802,7 @@ install-exec-local:
|
||||
--build-base="$$(basename "$${PYTHON}")-gpg" \
|
||||
install \
|
||||
--prefix "$(DESTDIR)$(prefix)" \
|
||||
+ $${SETUP_PY_EXTRA_OPTS:-} \
|
||||
--verbose ; \
|
||||
done
|
||||
|
@ -0,0 +1,58 @@
|
||||
diff --git a/lang/qt/tests/t-remarks.cpp b/lang/qt/tests/t-remarks.cpp
|
||||
index f9a901a..4b2f2ab 100644
|
||||
--- a/lang/qt/tests/t-remarks.cpp
|
||||
+++ b/lang/qt/tests/t-remarks.cpp
|
||||
@@ -47,6 +47,12 @@
|
||||
|
||||
#include "t-support.h"
|
||||
|
||||
+#define SKIP_ON_2_4() do { \
|
||||
+ if (GpgME::engineInfo(GpgME::GpgEngine).engineVersion() >= "2.4.0") { \
|
||||
+ QSKIP("The test does not work well with gnupg 2.4+."); \
|
||||
+ } \
|
||||
+} while (false)
|
||||
+
|
||||
using namespace QGpgME;
|
||||
using namespace GpgME;
|
||||
|
||||
@@ -105,6 +111,7 @@ private Q_SLOTS:
|
||||
|
||||
void testRemarkReplaceSingleUIDExportable()
|
||||
{
|
||||
+ SKIP_ON_2_4();
|
||||
if (!loopbackSupported()) {
|
||||
return;
|
||||
}
|
||||
@@ -187,6 +194,7 @@ private Q_SLOTS:
|
||||
|
||||
void testMultipleRemarks()
|
||||
{
|
||||
+ SKIP_ON_2_4();
|
||||
if (!loopbackSupported()) {
|
||||
return;
|
||||
}
|
||||
@@ -269,6 +277,7 @@ private Q_SLOTS:
|
||||
|
||||
void testRemarkReplaceSingleUID()
|
||||
{
|
||||
+ SKIP_ON_2_4();
|
||||
if (!loopbackSupported()) {
|
||||
return;
|
||||
}
|
||||
@@ -350,6 +359,7 @@ private Q_SLOTS:
|
||||
|
||||
void testRemarkReplaceMultiUID()
|
||||
{
|
||||
+ SKIP_ON_2_4();
|
||||
if (!loopbackSupported()) {
|
||||
return;
|
||||
}
|
||||
@@ -466,6 +476,8 @@ private:
|
||||
QTemporaryDir mDir;
|
||||
};
|
||||
|
||||
+#undef SKIP_ON_2_4
|
||||
+
|
||||
QTEST_MAIN(TestRemarks)
|
||||
|
||||
#include "t-remarks.moc"
|
@ -1,377 +0,0 @@
|
||||
From 3101e381eb7ff31138aa20438ae757365e390d2c Mon Sep 17 00:00:00 2001
|
||||
From: Jiri Kucera <sanczes@gmail.com>
|
||||
Date: Thu, 15 Jul 2021 22:41:37 +0200
|
||||
Subject: [PATCH] lang/python/gpgme.i: Fix memleaks
|
||||
|
||||
---
|
||||
lang/python/gpgme.i | 85 +++++++++++++++++++++++++++------------------
|
||||
1 file changed, 52 insertions(+), 33 deletions(-)
|
||||
|
||||
diff --git a/lang/python/gpgme.i b/lang/python/gpgme.i
|
||||
index 87371af8..fabf9e2c 100644
|
||||
--- a/lang/python/gpgme.i
|
||||
+++ b/lang/python/gpgme.i
|
||||
@@ -53,7 +53,7 @@
|
||||
{
|
||||
encodedInput = PyUnicode_AsUTF8String($input);
|
||||
if (encodedInput == NULL)
|
||||
- return NULL;
|
||||
+ SWIG_fail;
|
||||
$1 = PyBytes_AsString(encodedInput);
|
||||
}
|
||||
else if (PyBytes_Check($input))
|
||||
@@ -62,7 +62,7 @@
|
||||
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 * {
|
||||
@@ -70,14 +70,16 @@
|
||||
}
|
||||
|
||||
/* Likewise for a list of strings. */
|
||||
-%typemap(in) const char *[] (void *vector = NULL,
|
||||
- size_t size,
|
||||
+%typemap(arginit) const char *[] {
|
||||
+ $1 = NULL;
|
||||
+}
|
||||
+%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++) {
|
||||
@@ -86,12 +88,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))
|
||||
@@ -101,8 +98,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;
|
||||
@@ -110,14 +106,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. */
|
||||
@@ -135,7 +134,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));
|
||||
@@ -152,8 +151,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);
|
||||
}
|
||||
@@ -179,7 +177,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 */
|
||||
@@ -189,7 +187,7 @@
|
||||
if ((SWIG_ConvertPtr(pypointer,(void **) &$1, $1_descriptor,
|
||||
SWIG_POINTER_EXCEPTION | $disown )) == -1) {
|
||||
Py_DECREF(pypointer);
|
||||
- return NULL;
|
||||
+ SWIG_fail;
|
||||
}
|
||||
Py_DECREF(pypointer);
|
||||
}
|
||||
@@ -347,6 +345,10 @@
|
||||
}
|
||||
|
||||
/* Those are for gpgme_data_read() and gpgme_strerror_r(). */
|
||||
+%typemap(arginit) (void *buffer, size_t size), (char *buf, size_t buflen) {
|
||||
+ $1 = NULL;
|
||||
+ $2 = 0;
|
||||
+}
|
||||
%typemap(in) (void *buffer, size_t size), (char *buf, size_t buflen) {
|
||||
{
|
||||
long tmp$argnum;
|
||||
@@ -359,12 +361,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);
|
||||
@@ -373,11 +375,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. */
|
||||
@@ -390,11 +392,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))
|
||||
@@ -403,7 +405,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)
|
||||
@@ -432,8 +434,17 @@
|
||||
size++;
|
||||
}
|
||||
$result = PyList_New(size);
|
||||
+ if ($result == NULL)
|
||||
+ SWIG_fail;
|
||||
for (i=0,curr=$1; i<size; i++,curr=curr->next) {
|
||||
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);
|
||||
}
|
||||
}
|
||||
@@ -446,6 +457,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);
|
||||
}
|
||||
@@ -469,22 +482,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; i<size; i++,curr=curr->next) {
|
||||
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);
|
||||
}
|
||||
|
||||
From b2815dcba2e75f79a6349191b3744952a9bd3311 Mon Sep 17 00:00:00 2001
|
||||
From: Jiri Kucera <sanczes@gmail.com>
|
||||
Date: Sat, 17 Jul 2021 01:12:08 +0200
|
||||
Subject: [PATCH] lang/cpp/src/data.cpp: Fix memleaks
|
||||
|
||||
---
|
||||
lang/cpp/src/data.cpp | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/lang/cpp/src/data.cpp b/lang/cpp/src/data.cpp
|
||||
index 7a93cbc2..d08a29db 100644
|
||||
--- a/lang/cpp/src/data.cpp
|
||||
+++ b/lang/cpp/src/data.cpp
|
||||
@@ -249,6 +249,7 @@ std::vector<GpgME::Key> GpgME::Data::toKeys(Protocol proto) const
|
||||
}
|
||||
|
||||
if (gpgme_op_keylist_from_data_start (ctx->impl()->ctx, d->data, 0)) {
|
||||
+ delete ctx;
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
From eb3bf52fcb437b0508b2912f648ac25799daef55 Mon Sep 17 00:00:00 2001
|
||||
From: Jiri Kucera <sanczes@gmail.com>
|
||||
Date: Sat, 17 Jul 2021 01:12:45 +0200
|
||||
Subject: [PATCH] src/engine-gpg.c: Fix memleaks
|
||||
|
||||
---
|
||||
src/engine-gpg.c | 11 +++++++----
|
||||
1 file changed, 7 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/src/engine-gpg.c b/src/engine-gpg.c
|
||||
index b51ea173..af74714c 100644
|
||||
--- a/src/engine-gpg.c
|
||||
+++ b/src/engine-gpg.c
|
||||
@@ -1148,6 +1148,7 @@ build_argv (engine_gpg_t gpg, const char *pgmname)
|
||||
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. */
|
||||
+ free_argv (argv);
|
||||
return gpg_error (GPG_ERR_GENERAL);
|
||||
}
|
||||
/* If the data_type is FD, we have to do a dup2 here. */
|
||||
@@ -1270,6 +1271,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],
|
||||
@@ -1382,8 +1386,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;
|
||||
}
|
||||
@@ -1423,6 +1425,9 @@ read_colon_line (engine_gpg_t gpg)
|
||||
buffer = realloc (buffer, bufsize);
|
||||
if (!buffer)
|
||||
return gpg_error_from_syserror ();
|
||||
+ /* Prevent memory leaks. */
|
||||
+ gpg->colon.bufsize = bufsize;
|
||||
+ gpg->colon.buffer = buffer;
|
||||
}
|
||||
|
||||
nread = _gpgme_io_read (gpg->colon.fd[0], buffer+readpos, bufsize-readpos);
|
||||
@@ -1502,8 +1507,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;
|
||||
}
|
||||
|
||||
From e94363045f104fe57188bd014c91462e3693ec24 Mon Sep 17 00:00:00 2001
|
||||
From: Jiri Kucera <sanczes@gmail.com>
|
||||
Date: Sat, 17 Jul 2021 01:14:14 +0200
|
||||
Subject: [PATCH] src/engine-gpgsm.c: Fix memleaks
|
||||
|
||||
---
|
||||
src/engine-gpgsm.c | 8 ++++++--
|
||||
1 file changed, 6 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/engine-gpgsm.c b/src/engine-gpgsm.c
|
||||
index d5f0d7a9..7a8a049b 100644
|
||||
--- a/src/engine-gpgsm.c
|
||||
+++ b/src/engine-gpgsm.c
|
||||
@@ -1533,8 +1533,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;
|
||||
@@ -1634,8 +1636,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;
|
@ -1,13 +0,0 @@
|
||||
diff --git a/src/posix-io.c b/src/posix-io.c
|
||||
index e712ef2..2a3a81f 100644
|
||||
--- a/src/posix-io.c
|
||||
+++ b/src/posix-io.c
|
||||
@@ -570,7 +570,7 @@ _gpgme_io_spawn (const char *path, char *const argv[], unsigned int flags,
|
||||
if (fd_list[i].fd > fd)
|
||||
fd = fd_list[i].fd;
|
||||
fd++;
|
||||
-#if defined(__sun) || defined(__FreeBSD__)
|
||||
+#if defined(__sun) || defined(__FreeBSD__) || defined(__GLIBC__)
|
||||
closefrom (fd);
|
||||
max_fds = fd;
|
||||
#else /*!__sun */
|
@ -0,0 +1,67 @@
|
||||
diff --git a/src/gpgme-tool.c b/src/gpgme-tool.c
|
||||
index 0aa24510..c276202e 100644
|
||||
--- a/src/gpgme-tool.c
|
||||
+++ b/src/gpgme-tool.c
|
||||
@@ -1440,7 +1440,7 @@ gt_set_keylist_mode (gpgme_tool_t gt, gpgme_keylist_mode_t keylist_mode)
|
||||
gpg_error_t
|
||||
gt_get_keylist_mode (gpgme_tool_t gt)
|
||||
{
|
||||
-#define NR_KEYLIST_MODES 6
|
||||
+#define NR_KEYLIST_MODES 11
|
||||
const char *modes[NR_KEYLIST_MODES + 1];
|
||||
int idx = 0;
|
||||
gpgme_keylist_mode_t mode = gpgme_get_keylist_mode (gt->ctx);
|
||||
@@ -1455,16 +1455,23 @@ gt_get_keylist_mode (gpgme_tool_t gt)
|
||||
modes[idx++] = "sig_notations";
|
||||
if (mode & GPGME_KEYLIST_MODE_WITH_SECRET)
|
||||
modes[idx++] = "with_secret";
|
||||
+ if (mode & GPGME_KEYLIST_MODE_WITH_TOFU)
|
||||
+ modes[idx++] = "with_tofu";
|
||||
+ if (mode & GPGME_KEYLIST_MODE_WITH_KEYGRIP)
|
||||
+ modes[idx++] = "with_keygrip";
|
||||
if (mode & GPGME_KEYLIST_MODE_EPHEMERAL)
|
||||
modes[idx++] = "ephemeral";
|
||||
if (mode & GPGME_KEYLIST_MODE_VALIDATE)
|
||||
modes[idx++] = "validate";
|
||||
if (mode & GPGME_KEYLIST_MODE_FORCE_EXTERN)
|
||||
modes[idx++] = "force_extern";
|
||||
+ if (mode & GPGME_KEYLIST_MODE_WITH_V5FPR)
|
||||
+ modes[idx++] = "with_v5fpr";
|
||||
modes[idx++] = NULL;
|
||||
|
||||
gt_write_status (gt, STATUS_KEYLIST_MODE, modes[0], modes[1], modes[2],
|
||||
- modes[3], modes[4], modes[5], modes[6], NULL);
|
||||
+ modes[3], modes[4], modes[5], modes[6], modes[7], modes[8],
|
||||
+ modes[9], modes[10], NULL);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -2188,7 +2195,8 @@ cmd_include_certs (assuan_context_t ctx, char *line)
|
||||
|
||||
static const char hlp_keylist_mode[] =
|
||||
"KEYLIST_MODE [local] [extern] [sigs] [sig_notations]\n"
|
||||
- " [ephemeral] [validate]\n"
|
||||
+ " [with_secret] [with_tofu] [with_keygrip] [ephemeral]\n"
|
||||
+ " [validate] [force_extern] [with_v5fpr]\n"
|
||||
"\n"
|
||||
"Set the mode for the next KEYLIST command.";
|
||||
static gpg_error_t
|
||||
@@ -2210,12 +2218,18 @@ cmd_keylist_mode (assuan_context_t ctx, char *line)
|
||||
mode |= GPGME_KEYLIST_MODE_SIG_NOTATIONS;
|
||||
if (strstr (line, "with_secret"))
|
||||
mode |= GPGME_KEYLIST_MODE_WITH_SECRET;
|
||||
+ if (strstr (line, "with_tofu"))
|
||||
+ mode |= GPGME_KEYLIST_MODE_WITH_TOFU;
|
||||
+ if (strstr (line, "with_keygrip"))
|
||||
+ mode |= GPGME_KEYLIST_MODE_WITH_KEYGRIP;
|
||||
if (strstr (line, "ephemeral"))
|
||||
mode |= GPGME_KEYLIST_MODE_EPHEMERAL;
|
||||
if (strstr (line, "validate"))
|
||||
mode |= GPGME_KEYLIST_MODE_VALIDATE;
|
||||
if (strstr (line, "force_extern"))
|
||||
mode |= GPGME_KEYLIST_MODE_FORCE_EXTERN;
|
||||
+ if (strstr (line, "with_v5fpr"))
|
||||
+ mode |= GPGME_KEYLIST_MODE_WITH_V5FPR;
|
||||
|
||||
return gt_set_keylist_mode (server->gt, mode);
|
||||
}
|
@ -0,0 +1,39 @@
|
||||
diff -up gpgme-1.23.2/src/engine.c.sast_fix2 gpgme-1.23.2/src/engine.c
|
||||
--- gpgme-1.23.2/src/engine.c.sast_fix2 2024-08-05 17:31:46.790089148 +0200
|
||||
+++ gpgme-1.23.2/src/engine.c 2024-08-05 17:34:55.788069948 +0200
|
||||
@@ -73,7 +73,7 @@ static char *engine_minimal_version;
|
||||
static const char *
|
||||
engine_get_file_name (gpgme_protocol_t proto)
|
||||
{
|
||||
- if (proto > DIM (engine_ops))
|
||||
+ if (proto >= DIM (engine_ops))
|
||||
return NULL;
|
||||
|
||||
if (engine_ops[proto] && engine_ops[proto]->get_file_name)
|
||||
@@ -103,7 +103,7 @@ engine_get_home_dir (gpgme_protocol_t pr
|
||||
static char *
|
||||
engine_get_version (gpgme_protocol_t proto, const char *file_name)
|
||||
{
|
||||
- if (proto > DIM (engine_ops))
|
||||
+ if (proto >= DIM (engine_ops))
|
||||
return NULL;
|
||||
|
||||
if (engine_ops[proto] && engine_ops[proto]->get_version)
|
||||
@@ -118,7 +118,7 @@ engine_get_version (gpgme_protocol_t pro
|
||||
static const char *
|
||||
engine_get_req_version (gpgme_protocol_t proto)
|
||||
{
|
||||
- if (proto > DIM (engine_ops))
|
||||
+ if (proto >= DIM (engine_ops))
|
||||
return NULL;
|
||||
|
||||
if (engine_ops[proto] && engine_ops[proto]->get_req_version)
|
||||
@@ -403,7 +403,7 @@ _gpgme_set_engine_info (gpgme_engine_inf
|
||||
char *new_version;
|
||||
|
||||
/* FIXME: Use some PROTO_MAX definition. */
|
||||
- if (proto > DIM (engine_ops))
|
||||
+ if (proto >= DIM (engine_ops))
|
||||
return gpg_error (GPG_ERR_INV_VALUE);
|
||||
|
||||
while (info && info->protocol != proto)
|
@ -0,0 +1,86 @@
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
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
|
||||
eK+6lfilQuveoUwp/Xx5wXPNUy6q4eOOovCW7gS7I7288NGHCa2ul8sD6vA9C4mM
|
||||
4Zxaole9P9wwJe1zZFtCIy88zHM9vqv+YM9DxMCaW24+rUztr7eD4bCRdG+QlSh+
|
||||
7R/TaqSxY1eAAd1J5tma9CNJO73pTKU+/JhTBGFpSqMTCSskAwMCCAEBBwIDBF6X
|
||||
D9NmUQDgiyYNbhs1DMJ14mIw812wY1HVx/4QWYWiBunhrvSFxVbzsjD7/Wv+v3bm
|
||||
MPrL+M2DLyFiSewNmcS0JEdudVBHLmNvbSAoUmVsZWFzZSBTaWduaW5nIEtleSAy
|
||||
MDIxKYiaBBMTCABCFiEEAvON/3Mf+XywOaHaVJ5pXpBboggFAmFpSqMCGwMFCQ9x
|
||||
14oFCwkIBwIDIgIBBhUKCQgLAgQWAgMBAh4HAheAAAoJEFSeaV6QW6IITkoA/RYa
|
||||
jaTl1eEBU/Gdm12o3jrI55N5xZK2XTqSx25clVyjAP0XwMW/Og5+ND1ri3bAqADV
|
||||
WlBDUswz8wYxsb0C4kYBkoh1BBAWCgAdFiEEbapuZKdtKEBXG0kCUoiXuCZAOtoF
|
||||
AmFpTvEACgkQUoiXuCZAOtrJQAEAh7YyykjAy/Qs1yC3ji8iBfIVnPXvblrIx3SR
|
||||
RyDwRC8BAKtZbEuKTtPlgkLUgMleTcZJ/vEhJE+GvfQ9o5gWCqEFiHUEEBYKAB0W
|
||||
IQTB00tpIZ5K7sC6HCHj/f8hjkW3KwUCYWlPWgAKCRDj/f8hjkW3Kx4eAQDp6aGS
|
||||
N/fU4xLl8RSvQUVjVA+aCTrMQR3hRwqw8liF2wEA3O3ECxz6e1+DoItYoJBBLKLw
|
||||
eiInsGZ/+h5XYrpXTgA=
|
||||
=4+Sn
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
Loading…
Reference in new issue