Compare commits

...

No commits in common. "c8" and "c9s" have entirely different histories.
c8 ... c9s

14 changed files with 211 additions and 299 deletions

21
.gitignore vendored
View File

@ -1 +1,20 @@
SOURCES/gpgme-1.13.1.licenses.tar.bz2 # ignore sources
/gpgme-[0-9].[0-9].[0-9].tar.bz2
/gpgme-[0-9].[0-9].[0-9].tar.bz2.sig
# ignore fedpkg local build artifacts
/.build-*.log
/gpgme-[0-9].[0-9].[0-9]/
/gpgme-[0-9].[0-9].[0-9]-*.src.rpm
/i686/
/x86_64/
# ignore emacs cruft
/.#*
/#*
/gpgme-1.10.0.tar.bz2
/gpgme-1.11.0.tar.bz2
/gpgme-1.11.1.tar.bz2
/gpgme-1.12.0.tar.bz2
/gpgme-1.13.1.tar.bz2
/gpgme-1.14.0.tar.bz2
/gpgme-1.15.1.tar.bz2
/gpgme-1.15.1.licenses.tar.bz2

View File

@ -1 +0,0 @@
a33a6121d761d499716eec342fc99bcc57f6a693 SOURCES/gpgme-1.13.1.licenses.tar.bz2

View File

@ -1,26 +0,0 @@
diff --git a/src/data-mem.c b/src/data-mem.c
index 539b453..ae16bab 100644
--- a/src/data-mem.c
+++ b/src/data-mem.c
@@ -271,7 +271,7 @@ gpgme_data_release_and_get_mem (gpgme_data_t dh, size_t *r_len)
}
else
{
- if (blankout && len)
+ if (str && blankout && len)
*str = 0;
/* Prevent mem_release from releasing the buffer memory. We
* must not fail from this point. */
diff --git a/src/vfs-create.c b/src/vfs-create.c
index 51b8307..445cd05 100644
--- a/src/vfs-create.c
+++ b/src/vfs-create.c
@@ -130,7 +130,7 @@ _gpgme_op_vfs_create (gpgme_ctx_t ctx, gpgme_key_t recp[],
return err;
i = 0;
- while (!err && recp[i])
+ while (!err && recp && recp[i])
{
if (!recp[i]->subkeys || !recp[i]->subkeys->fpr)
{

View File

@ -1,31 +0,0 @@
diff --git a/src/gpgme-glib.pc.in b/src/gpgme-glib.pc.in
index bd42a31..781a463 100644
--- a/src/gpgme-glib.pc.in
+++ b/src/gpgme-glib.pc.in
@@ -7,8 +7,8 @@ api_version=@GPGME_CONFIG_API_VERSION@
Name: gpgme-glib
Description: GnuPG Made Easy to access GnuPG with Glib
-Requires: gpg-error, libassuan, glib-2.0
+Requires: glib-2.0
Version: @PACKAGE_VERSION@
-Cflags: @GPGME_CONFIG_CFLAGS@
-Libs: @GPGME_CONFIG_LIBS@
+Cflags: @GPGME_CONFIG_CFLAGS@ -I/usr/include/libassuan2
+Libs: @GPGME_CONFIG_LIBS@ -lgpg-error -lassuan
URL: https://www.gnupg.org/software/gpgme/index.html
diff --git a/src/gpgme.pc.in b/src/gpgme.pc.in
index be288b8..a71bcf7 100644
--- a/src/gpgme.pc.in
+++ b/src/gpgme.pc.in
@@ -7,8 +7,7 @@ api_version=@GPGME_CONFIG_API_VERSION@
Name: gpgme
Description: GnuPG Made Easy to access GnuPG
-Requires: gpg-error, libassuan
Version: @PACKAGE_VERSION@
-Cflags: @GPGME_CONFIG_CFLAGS@
-Libs: @GPGME_CONFIG_LIBS@
+Cflags: @GPGME_CONFIG_CFLAGS@ -I/usr/include/libassuan2
+Libs: @GPGME_CONFIG_LIBS@ -lgpg-error -lassuan
URL: https://www.gnupg.org/software/gpgme/index.html

View File

@ -1,27 +0,0 @@
diff -up gpgme-1.13.1/src/engine-gpg.c.build gpgme-1.13.1/src/engine-gpg.c
--- gpgme-1.13.1/src/engine-gpg.c.build 2019-06-13 08:45:22.000000000 +0200
+++ gpgme-1.13.1/src/engine-gpg.c 2020-04-30 14:30:35.550253558 +0200
@@ -2920,6 +2920,12 @@ gpg_keylist_build_options (engine_gpg_t
err = add_arg (gpg, "--with-colons");
+ if (have_gpg_version (gpg, "2.2.19"))
+ {
+ if (!err)
+ err = add_arg (gpg, "--with-keygrip");
+ }
+
/* Since gpg 2.1.15 fingerprints are always printed, thus there is
* no more need to explicitly request them. */
if (!have_gpg_version (gpg, "2.1.15"))
diff -up gpgme-1.13.1/tests/json/t-keylist-secret.out.json.build gpgme-1.13.1/tests/json/t-keylist-secret.out.json
--- gpgme-1.13.1/tests/json/t-keylist-secret.out.json.build 2018-12-03 10:37:25.000000000 +0100
+++ gpgme-1.13.1/tests/json/t-keylist-secret.out.json 2020-04-30 14:24:40.904707411 +0200
@@ -91,7 +91,6 @@
"can_sign": true,
"can_certify": true,
"can_authenticate": true,
- "secret": true,
"is_qualified": false,
"protocol": "OpenPGP",
"fingerprint": "D695676BDCEDCC2CDD6152BCFE180B1DA9E3B0B2",

6
gating.yaml Normal file
View File

@ -0,0 +1,6 @@
--- !Policy
product_versions:
- rhel-9
decision_context: osci_compose_gate
rules:
- !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.tier1.functional}

View File

@ -1,37 +1,14 @@
diff --git a/lang/cpp/src/context.cpp b/lang/cpp/src/context.cpp From 3101e381eb7ff31138aa20438ae757365e390d2c Mon Sep 17 00:00:00 2001
index c0a1dc21..e991dbc8 100644 From: Jiri Kucera <sanczes@gmail.com>
--- a/lang/cpp/src/context.cpp Date: Thu, 15 Jul 2021 22:41:37 +0200
+++ b/lang/cpp/src/context.cpp Subject: [PATCH] lang/python/gpgme.i: Fix memleaks
@@ -223,6 +223,7 @@ Context *Context::createForProtocol(Protocol proto)
} ---
break; lang/python/gpgme.i | 85 +++++++++++++++++++++++++++------------------
default: 1 file changed, 52 insertions(+), 33 deletions(-)
+ gpgme_release(ctx);
return nullptr;
}
@@ -273,6 +274,7 @@ std::unique_ptr<Context> 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 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;
}
diff --git a/lang/python/gpgme.i b/lang/python/gpgme.i diff --git a/lang/python/gpgme.i b/lang/python/gpgme.i
index 87371af8..64b88d54 100644 index 87371af8..fabf9e2c 100644
--- a/lang/python/gpgme.i --- a/lang/python/gpgme.i
+++ b/lang/python/gpgme.i +++ b/lang/python/gpgme.i
@@ -53,7 +53,7 @@ @@ -53,7 +53,7 @@
@ -43,7 +20,7 @@ index 87371af8..64b88d54 100644
$1 = PyBytes_AsString(encodedInput); $1 = PyBytes_AsString(encodedInput);
} }
else if (PyBytes_Check($input)) else if (PyBytes_Check($input))
@@ -62,22 +62,25 @@ @@ -62,7 +62,7 @@
PyErr_Format(PyExc_TypeError, PyErr_Format(PyExc_TypeError,
"arg %d: expected str, bytes, or None, got %s", "arg %d: expected str, bytes, or None, got %s",
$argnum, $input->ob_type->tp_name); $argnum, $input->ob_type->tp_name);
@ -52,16 +29,15 @@ index 87371af8..64b88d54 100644
} }
} }
%typemap(freearg) const char * { %typemap(freearg) const char * {
Py_XDECREF(encodedInput$argnum); @@ -70,14 +70,16 @@
} }
+%typemap(arginit) const char *[] {
+ $1 = NULL;
+}
+
/* Likewise for a list of strings. */ /* Likewise for a list of strings. */
-%typemap(in) const char *[] (void *vector = NULL, -%typemap(in) const char *[] (void *vector = NULL,
- size_t size, - size_t size,
+%typemap(arginit) const char *[] {
+ $1 = NULL;
+}
+%typemap(in) const char *[] (size_t size, +%typemap(in) const char *[] (size_t size,
PyObject **pyVector = NULL) { PyObject **pyVector = NULL) {
/* Check if is a list */ /* Check if is a list */
@ -73,7 +49,7 @@ index 87371af8..64b88d54 100644
pyVector = calloc(sizeof *pyVector, size); pyVector = calloc(sizeof *pyVector, size);
for (i = 0; i < size; i++) { for (i = 0; i < size; i++) {
@@ -86,12 +89,7 @@ @@ -86,12 +88,7 @@
{ {
pyVector[i] = PyUnicode_AsUTF8String(o); pyVector[i] = PyUnicode_AsUTF8String(o);
if (pyVector[i] == NULL) if (pyVector[i] == NULL)
@ -87,7 +63,7 @@ index 87371af8..64b88d54 100644
$1[i] = PyBytes_AsString(pyVector[i]); $1[i] = PyBytes_AsString(pyVector[i]);
} }
else if (PyString_Check(o)) else if (PyString_Check(o))
@@ -101,8 +99,7 @@ @@ -101,8 +98,7 @@
"arg %d: list must contain only str or bytes, got %s " "arg %d: list must contain only str or bytes, got %s "
"at position %d", "at position %d",
$argnum, o->ob_type->tp_name, i); $argnum, o->ob_type->tp_name, i);
@ -97,7 +73,7 @@ index 87371af8..64b88d54 100644
} }
} }
$1[i] = NULL; $1[i] = NULL;
@@ -110,14 +107,17 @@ @@ -110,14 +106,17 @@
PyErr_Format(PyExc_TypeError, PyErr_Format(PyExc_TypeError,
"arg %d: expected a list of str or bytes, got %s", "arg %d: expected a list of str or bytes, got %s",
$argnum, $input->ob_type->tp_name); $argnum, $input->ob_type->tp_name);
@ -120,7 +96,7 @@ index 87371af8..64b88d54 100644
} }
/* Release returned buffers as necessary. */ /* Release returned buffers as necessary. */
@@ -135,7 +135,7 @@ @@ -135,7 +134,7 @@
if (!PySequence_Check($input)) { if (!PySequence_Check($input)) {
PyErr_Format(PyExc_ValueError, "arg %d: Expected a list of gpgme_key_t", PyErr_Format(PyExc_ValueError, "arg %d: Expected a list of gpgme_key_t",
$argnum); $argnum);
@ -129,7 +105,7 @@ index 87371af8..64b88d54 100644
} }
if((numb = PySequence_Length($input)) != 0) { if((numb = PySequence_Length($input)) != 0) {
$1 = (gpgme_key_t*)malloc((numb+1)*sizeof(gpgme_key_t)); $1 = (gpgme_key_t*)malloc((numb+1)*sizeof(gpgme_key_t));
@@ -152,8 +152,7 @@ @@ -152,8 +151,7 @@
"arg %d: list must contain only gpgme_key_ts, got %s " "arg %d: list must contain only gpgme_key_ts, got %s "
"at position %d", "at position %d",
$argnum, pypointer->ob_type->tp_name, i); $argnum, pypointer->ob_type->tp_name, i);
@ -139,7 +115,7 @@ index 87371af8..64b88d54 100644
} }
Py_DECREF(pypointer); Py_DECREF(pypointer);
} }
@@ -179,7 +178,7 @@ @@ -179,7 +177,7 @@
pypointer = _gpg_obj2gpgme_data_t($input, $argnum, &wrapper, pypointer = _gpg_obj2gpgme_data_t($input, $argnum, &wrapper,
&bytesio, &view); &bytesio, &view);
if (pypointer == NULL) if (pypointer == NULL)
@ -148,7 +124,7 @@ index 87371af8..64b88d54 100644
have_view = !! view.obj; have_view = !! view.obj;
/* input = $input, 1 = $1, 1_descriptor = $1_descriptor */ /* input = $input, 1 = $1, 1_descriptor = $1_descriptor */
@@ -189,7 +188,7 @@ @@ -189,7 +187,7 @@
if ((SWIG_ConvertPtr(pypointer,(void **) &$1, $1_descriptor, if ((SWIG_ConvertPtr(pypointer,(void **) &$1, $1_descriptor,
SWIG_POINTER_EXCEPTION | $disown )) == -1) { SWIG_POINTER_EXCEPTION | $disown )) == -1) {
Py_DECREF(pypointer); Py_DECREF(pypointer);
@ -157,19 +133,18 @@ index 87371af8..64b88d54 100644
} }
Py_DECREF(pypointer); Py_DECREF(pypointer);
} }
@@ -346,6 +345,11 @@ @@ -347,6 +345,10 @@
PyErr_SetString(PyExc_TypeError, "Numeric argument expected");
} }
/* Those are for gpgme_data_read() and gpgme_strerror_r(). */
+%typemap(arginit) (void *buffer, size_t size), (char *buf, size_t buflen) { +%typemap(arginit) (void *buffer, size_t size), (char *buf, size_t buflen) {
+ $1 = NULL; + $1 = NULL;
+ $2 = 0; + $2 = 0;
+} +}
+
/* Those are for gpgme_data_read() and gpgme_strerror_r(). */
%typemap(in) (void *buffer, size_t size), (char *buf, size_t buflen) { %typemap(in) (void *buffer, size_t size), (char *buf, size_t buflen) {
{ {
@@ -359,12 +363,12 @@ long tmp$argnum;
@@ -359,12 +361,12 @@
else else
{ {
PyErr_SetString(PyExc_TypeError, "Numeric argument expected"); PyErr_SetString(PyExc_TypeError, "Numeric argument expected");
@ -184,7 +159,7 @@ index 87371af8..64b88d54 100644
} }
$2 = (size_t) tmp$argnum; $2 = (size_t) tmp$argnum;
$1 = ($1_ltype) malloc($2+1); $1 = ($1_ltype) malloc($2+1);
@@ -373,11 +377,11 @@ @@ -373,11 +375,11 @@
%typemap(argout) (void *buffer, size_t size), (char *buf, size_t buflen) { %typemap(argout) (void *buffer, size_t size), (char *buf, size_t buflen) {
Py_XDECREF($result); /* Blow away any previous result */ Py_XDECREF($result); /* Blow away any previous result */
if (result < 0) { /* Check for I/O error */ if (result < 0) { /* Check for I/O error */
@ -198,7 +173,7 @@ index 87371af8..64b88d54 100644
} }
/* For gpgme_data_write, but should be universal. */ /* For gpgme_data_write, but should be universal. */
@@ -390,11 +394,11 @@ @@ -390,11 +392,11 @@
{ {
encodedInput = PyUnicode_AsUTF8String($input); encodedInput = PyUnicode_AsUTF8String($input);
if (encodedInput == NULL) if (encodedInput == NULL)
@ -212,7 +187,7 @@ index 87371af8..64b88d54 100644
} }
} }
else if (PyBytes_Check($input)) else if (PyBytes_Check($input))
@@ -403,7 +407,7 @@ @@ -403,7 +405,7 @@
PyErr_Format(PyExc_TypeError, PyErr_Format(PyExc_TypeError,
"arg %d: expected str, bytes, or None, got %s", "arg %d: expected str, bytes, or None, got %s",
$argnum, $input->ob_type->tp_name); $argnum, $input->ob_type->tp_name);
@ -221,7 +196,7 @@ index 87371af8..64b88d54 100644
} }
if (! $1) if (! $1)
@@ -432,8 +436,17 @@ @@ -432,8 +434,17 @@
size++; size++;
} }
$result = PyList_New(size); $result = PyList_New(size);
@ -239,7 +214,7 @@ index 87371af8..64b88d54 100644
PyList_SetItem($result, i, o); PyList_SetItem($result, i, o);
} }
} }
@@ -446,6 +459,8 @@ @@ -446,6 +457,8 @@
PyObject *fragile; PyObject *fragile;
fragile = SWIG_NewPointerObj(SWIG_as_voidptr($1), $1_descriptor, fragile = SWIG_NewPointerObj(SWIG_as_voidptr($1), $1_descriptor,
%newpointer_flags); %newpointer_flags);
@ -248,7 +223,7 @@ index 87371af8..64b88d54 100644
$result = _gpg_wrap_result(fragile, name); $result = _gpg_wrap_result(fragile, name);
Py_DECREF(fragile); Py_DECREF(fragile);
} }
@@ -469,22 +484,28 @@ wrapresult(gpgme_vfs_mount_result_t, "VFSMountResult") @@ -469,22 +482,28 @@ wrapresult(gpgme_vfs_mount_result_t, "VFSMountResult")
} }
$result = PyList_New(size); $result = PyList_New(size);
if ($result == NULL) if ($result == NULL)
@ -280,11 +255,43 @@ index 87371af8..64b88d54 100644
} }
PyList_SetItem($result, i, o); 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 diff --git a/src/engine-gpg.c b/src/engine-gpg.c
index dc2d9455..a1e40fe2 100644 index b51ea173..af74714c 100644
--- a/src/engine-gpg.c --- a/src/engine-gpg.c
+++ b/src/engine-gpg.c +++ b/src/engine-gpg.c
@@ -1122,6 +1122,7 @@ build_argv (engine_gpg_t gpg, const char *pgmname) @@ -1148,6 +1148,7 @@ build_argv (engine_gpg_t gpg, const char *pgmname)
to avoid and given that we reach this here only to avoid and given that we reach this here only
after a malloc failure for a small object, it is after a malloc failure for a small object, it is
probably better not to do anything. */ probably better not to do anything. */
@ -292,7 +299,7 @@ index dc2d9455..a1e40fe2 100644
return gpg_error (GPG_ERR_GENERAL); return gpg_error (GPG_ERR_GENERAL);
} }
/* If the data_type is FD, we have to do a dup2 here. */ /* If the data_type is FD, we have to do a dup2 here. */
@@ -1239,6 +1240,9 @@ read_status (engine_gpg_t gpg) @@ -1270,6 +1271,9 @@ read_status (engine_gpg_t gpg)
buffer = realloc (buffer, bufsize); buffer = realloc (buffer, bufsize);
if (!buffer) if (!buffer)
return gpg_error_from_syserror (); return gpg_error_from_syserror ();
@ -302,7 +309,7 @@ index dc2d9455..a1e40fe2 100644
} }
nread = _gpgme_io_read (gpg->status.fd[0], nread = _gpgme_io_read (gpg->status.fd[0],
@@ -1351,8 +1355,6 @@ read_status (engine_gpg_t gpg) @@ -1382,8 +1386,6 @@ read_status (engine_gpg_t gpg)
} }
/* Update the gpg object. */ /* Update the gpg object. */
@ -311,7 +318,7 @@ index dc2d9455..a1e40fe2 100644
gpg->status.readpos = readpos; gpg->status.readpos = readpos;
return 0; return 0;
} }
@@ -1392,6 +1394,9 @@ read_colon_line (engine_gpg_t gpg) @@ -1423,6 +1425,9 @@ read_colon_line (engine_gpg_t gpg)
buffer = realloc (buffer, bufsize); buffer = realloc (buffer, bufsize);
if (!buffer) if (!buffer)
return gpg_error_from_syserror (); return gpg_error_from_syserror ();
@ -321,7 +328,7 @@ index dc2d9455..a1e40fe2 100644
} }
nread = _gpgme_io_read (gpg->colon.fd[0], buffer+readpos, bufsize-readpos); nread = _gpgme_io_read (gpg->colon.fd[0], buffer+readpos, bufsize-readpos);
@@ -1471,8 +1476,6 @@ read_colon_line (engine_gpg_t gpg) @@ -1502,8 +1507,6 @@ read_colon_line (engine_gpg_t gpg)
} }
/* Update the gpg object. */ /* Update the gpg object. */
@ -330,8 +337,18 @@ index dc2d9455..a1e40fe2 100644
gpg->colon.readpos = readpos; gpg->colon.readpos = readpos;
return 0; 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 diff --git a/src/engine-gpgsm.c b/src/engine-gpgsm.c
index ae5d8ef1..1f603f19 100644 index d5f0d7a9..7a8a049b 100644
--- a/src/engine-gpgsm.c --- a/src/engine-gpgsm.c
+++ b/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, @@ -1533,8 +1533,10 @@ gpgsm_export (void *engine, const char *pattern, gpgme_export_mode_t mode,
@ -358,41 +375,3 @@ index ae5d8ef1..1f603f19 100644
gpgsm_clear_fd (gpgsm, INPUT_FD); gpgsm_clear_fd (gpgsm, INPUT_FD);
gpgsm_clear_fd (gpgsm, MESSAGE_FD); gpgsm_clear_fd (gpgsm, MESSAGE_FD);
gpgsm->inline_data = NULL; gpgsm->inline_data = NULL;
diff --git a/src/engine.c b/src/engine.c
index 05979c15..7e2e3800 100644
--- a/src/engine.c
+++ b/src/engine.c
@@ -460,7 +460,8 @@ _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 7a0bfcb3..f4ddd83b 100644
--- a/src/gpgme-tool.c
+++ b/src/gpgme-tool.c
@@ -1189,6 +1189,7 @@ gt_get_key (gpgme_tool_t gt, const char *pattern, gpgme_key_t *r_key)
similar hack to sort out such duplicates but it can't
do that while listing keys. */
gpgme_key_unref (key);
+ key = NULL;
goto try_next_key;
}
if (!err)
diff --git a/src/keylist.c b/src/keylist.c
index cdb115fd..b7cbf3c3 100644
--- a/src/keylist.c
+++ b/src/keylist.c
@@ -1321,6 +1321,7 @@ gpgme_get_key (gpgme_ctx_t ctx, const char *fpr, gpgme_key_t *r_key,
similar hack to sort out such duplicates but it can't
do that while listing keys. */
gpgme_key_unref (key);
+ key = NULL;
goto try_next_key;
}
if (!err)

View File

@ -0,0 +1,13 @@
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 */

View File

@ -1,23 +1,15 @@
%bcond_without check %bcond_without check
%if 0%{?rhel} > 7
# Disable python2 build by default
%bcond_with python2
%else
%bcond_without python2
%endif
# trim changelog included in binary rpms # trim changelog included in binary rpms
%global _changelog_trimtime %(date +%s -d "1 year ago") %global _changelog_trimtime %(date +%s -d "1 year ago")
# STATUS_KEY_CONSIDERED has been added in 2.1.13 %global gnupg2_min_ver 2.2.24
%global gnupg2_min_ver 2.1.13 %global libgpg_error_min_ver 1.36
%global libgpg_error_min_ver 1.24
Name: gpgme Name: gpgme
Summary: GnuPG Made Easy - high level crypto API Summary: GnuPG Made Easy - high level crypto API
Version: 1.13.1 Version: 1.15.1
Release: 11%{?dist} Release: 6%{?dist}
# /usr/bin/gpgme-tool is licensed under GPLv3+ # /usr/bin/gpgme-tool is licensed under GPLv3+
# the rest is licensed under LGPLv2+ # the rest is licensed under LGPLv2+
@ -37,19 +29,14 @@ Patch1001: 0001-don-t-add-extra-libraries-for-linking.patch
Patch1002: gpgme-1.3.2-largefile.patch Patch1002: gpgme-1.3.2-largefile.patch
# Let's fix stupid AX_PYTHON_DEVEL # Let's fix stupid AX_PYTHON_DEVEL
Patch1003: 0001-fix-stupid-ax_python_devel.patch Patch1003: 0001-fix-stupid-ax_python_devel.patch
# Fix resource leaks discovered by static code analyzer # Fix static analysis issues
Patch1004: gpgme-1.13.1-fix-resource-leaks.patch Patch1004: gpgme-1.15.1-covscan.patch
# Make the make check work with gnupg-2.2.19 and above # glibc 2.34 introduces closefrom()
Patch1005: gpgme-build-with-gnupg-2.2.19.patch Patch1005: gpgme-1.15.1-glibc-closefrom.patch
# Fix NULL dereference
Patch1006: gpgme-1.13.1-fix-null-deref.patch
# Remove Requires: from pkgconfigs (rely only on rpm deps
# since both libgpg-error and libassuan have no pkgconfigs
# packaged)
Patch1007: gpgme-1.13.1-pkgconfig.patch
#BuildRequires: autoconf #BuildRequires: autoconf
#BuildRequires: automake #BuildRequires: automake
BuildRequires: make
BuildRequires: gcc BuildRequires: gcc
BuildRequires: gcc-c++ BuildRequires: gcc-c++
BuildRequires: gawk BuildRequires: gawk
@ -82,8 +69,6 @@ management.
Summary: Development headers and libraries for %{name} Summary: Development headers and libraries for %{name}
Requires: %{name}%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} Requires: %{name}%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release}
Requires: libgpg-error-devel%{?_isa} >= %{libgpg_error_min_ver} Requires: libgpg-error-devel%{?_isa} >= %{libgpg_error_min_ver}
Requires(post): /sbin/install-info
Requires(postun): /sbin/install-info
%description devel %description devel
%{summary}. %{summary}.
@ -114,7 +99,6 @@ BuildRequires: cmake
%package -n q%{name} %package -n q%{name}
Summary: Qt API bindings/wrapper for GPGME Summary: Qt API bindings/wrapper for GPGME
Requires: %{name}pp%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} Requires: %{name}pp%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release}
# This is probably redundant, but it satisfies RPMDIFF:
Requires: %{name}%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} Requires: %{name}%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release}
BuildRequires: pkgconfig(Qt5Core) BuildRequires: pkgconfig(Qt5Core)
BuildRequires: pkgconfig(Qt5Test) BuildRequires: pkgconfig(Qt5Test)
@ -134,22 +118,12 @@ BuildRequires: cmake
%description -n q%{name}-devel %description -n q%{name}-devel
%{summary}. %{summary}.
%if %{with python2}
%package -n python2-gpg
Summary: %{name} bindings for Python 2
%{?python_provide:%python_provide python2-gpg}
BuildRequires: python2-devel
Requires: %{name}%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release}
%description -n python2-gpg
%{summary}.
%endif
%package -n python3-gpg %package -n python3-gpg
Summary: %{name} bindings for Python 3 Summary: %{name} bindings for Python 3
%{?python_provide:%python_provide python3-gpg} %{?python_provide:%python_provide python3-gpg}
BuildRequires: python3-devel BuildRequires: python3-devel
Requires: %{name}%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} Requires: %{name}%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release}
Obsoletes: platform-python-gpg < %{version}-%{release}
%description -n python3-gpg %description -n python3-gpg
%{summary}. %{summary}.
@ -162,11 +136,14 @@ Requires: %{name}%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release}
# set it to a value which we know will be suppressed. # set it to a value which we know will be suppressed.
sed -i -e 's|^libdir=@libdir@$|libdir=@exec_prefix@/lib|g' src/gpgme-config.in sed -i -e 's|^libdir=@libdir@$|libdir=@exec_prefix@/lib|g' src/gpgme-config.in
%build # The build machinery does not support Python 3.9+ yet
#./autogen.sh # https://github.com/gpg/gpgme/pull/4
%configure --disable-static --disable-silent-rules \ sed -i 's/3.8/%{python3_version}/g' configure
--enable-languages=cpp,qt,python
%build
# People neeed to learn that you can't run autogen.sh anymore
#./autogen.sh
%configure --disable-static --disable-silent-rules --enable-languages=cpp,qt,python
%make_build %make_build
%install %install
@ -189,13 +166,12 @@ mv %{buildroot}%{_includedir}/gpgme.h \
install -m644 -p -D %{SOURCE2} %{buildroot}%{_includedir}/gpgme.h install -m644 -p -D %{SOURCE2} %{buildroot}%{_includedir}/gpgme.h
%endif %endif
chrpath -d %{buildroot}%{_bindir}/%{name}-tool chrpath -d %{buildroot}%{_bindir}/%{name}-tool
chrpath -d %{buildroot}%{_bindir}/%{name}-json
chrpath -d %{buildroot}%{_libdir}/lib%{name}pp.so* chrpath -d %{buildroot}%{_libdir}/lib%{name}pp.so*
chrpath -d %{buildroot}%{_libdir}/libq%{name}.so* chrpath -d %{buildroot}%{_libdir}/libq%{name}.so*
# autofoo installs useless stuff for uninstall # autofoo installs useless stuff for uninstall
%if %{with python2}
rm -vf %{buildroot}%{python2_sitelib}/gpg/install_files.txt rm -vf %{buildroot}%{python2_sitelib}/gpg/install_files.txt
%endif
rm -vf %{buildroot}%{python3_sitelib}/gpg/install_files.txt rm -vf %{buildroot}%{python3_sitelib}/gpg/install_files.txt
%if %{with check} %if %{with check}
@ -203,21 +179,11 @@ rm -vf %{buildroot}%{python3_sitelib}/gpg/install_files.txt
make check make check
%endif %endif
%ldconfig_scriptlets
%files %files
%license COPYING* LICENSES %license COPYING* LICENSES
%doc AUTHORS ChangeLog NEWS README* THANKS TODO VERSION %doc AUTHORS NEWS README*
%{_libdir}/lib%{name}.so.11*
%{_bindir}/%{name}-json %{_bindir}/%{name}-json
%{_libdir}/lib%{name}.so.11*
%post devel
/sbin/install-info %{_infodir}/%{name}.info %{_infodir}/dir 2>/dev/null || :
%preun devel
if [ $1 -eq 0 ] ; then
/sbin/install-info --delete %{_infodir}/%{name}.info %{_infodir}/dir 2>/dev/null || :
fi
%files devel %files devel
%{_bindir}/%{name}-config %{_bindir}/%{name}-config
@ -234,7 +200,7 @@ fi
%files -n %{name}pp %files -n %{name}pp
%doc lang/cpp/README %doc lang/cpp/README
%{_libdir}/lib%{name}pp.so.* %{_libdir}/lib%{name}pp.so.6*
%files -n %{name}pp-devel %files -n %{name}pp-devel
%{_includedir}/%{name}++/ %{_includedir}/%{name}++/
@ -243,7 +209,7 @@ fi
%files -n q%{name} %files -n q%{name}
%doc lang/qt/README %doc lang/qt/README
%{_libdir}/libq%{name}.so.* %{_libdir}/libq%{name}.so.7*
%files -n q%{name}-devel %files -n q%{name}-devel
%{_includedir}/q%{name}/ %{_includedir}/q%{name}/
@ -251,74 +217,87 @@ fi
%{_libdir}/libq%{name}.so %{_libdir}/libq%{name}.so
%{_libdir}/cmake/QGpgme/ %{_libdir}/cmake/QGpgme/
%if %{with python2}
%files -n python2-gpg
%doc lang/python/README
%{python2_sitearch}/gpg-*.egg-info
%{python2_sitearch}/gpg/
%endif
%files -n python3-gpg %files -n python3-gpg
%doc lang/python/README %doc lang/python/README
%{python3_sitearch}/gpg-*.egg-info %{python3_sitearch}/gpg-*.egg-info
%{python3_sitearch}/gpg/ %{python3_sitearch}/gpg/
%changelog %changelog
* Thu Feb 10 2022 Jiri Kucera <jkucera@redhat.com> - 1.13.1-11 * Thu Feb 17 2022 Jiri Kucera <jkucera@redhat.com> - 1.15.1-6
- Update pkgconfig files
Related: #1953905
* Wed Feb 09 2022 Jiri Kucera <jkucera@redhat.com> - 1.13.1-10
- Add fixed pkgconfig files
Resolves: #1953905
* Fri Jun 11 2021 Jiri Kucera <jkucera@redhat.com> - 1.13.1-9
- Remove pkgconfig files
Needs libgpg-error and libassuan rebase
Related: #1882423
* Tue Jun 08 2021 Jiri Kucera <jkucera@redhat.com> - 1.13.1-8
- Add LICENSES file into the tarball, update License field
Add pkgconfig files to gpgme-devel
Resolves: #1882423, #1953905
* Wed Nov 18 2020 Jiri Kucera <jkucera@redhat.com> - 1.13.1-7
- Fix null dereference
Fix licence tag
Related: #1726861
* Fri Nov 06 2020 Jiri Kucera <jkucera@redhat.com> - 1.13.1-6
- Try to fix RPMDIFF issues
Related: #1726861
* Tue Nov 03 2020 Jiri Kucera <jkucera@redhat.com> - 1.13.1-5
- Rebuild - Rebuild
Related: #1726861 Resolves: #2035319
* Tue Sep 29 2020 Jiri Kucera <jkucera@redhat.com> - 1.13.1-4 * Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 1.15.1-5
- Rebuild - Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
Resolves: #1726861 Related: rhbz#1991688
* Tue Jun 02 2020 Jiri Kucera <jkucera@redhat.com> - 1.13.1-3 * Fri Jul 16 2021 Jiri Kucera <jkucera@redhat.com> - 1.15.1-4
- Fix resource leaks found by static code analysis - Fix license and covscan issues
Related: #1829822 Resolves: #1938732
* Mon Jun 01 2020 Jiri Kucera <jkucera@redhat.com> - 1.13.1-2 * Thu Apr 15 2021 Mohan Boddu <mboddu@redhat.com> - 1.15.1-3
- Remove *.pc files due to 'nothing provides pkgconfig(gpg-error)' - Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
and 'nothing provides pkgconfig(libassuan)' dnf errors
Related: #1829822
* Mon Jun 01 2020 Jiri Kucera <jkucera@redhat.com> - 1.13.1-1 * Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.15.1-2
- Update to gpgme 1.13.1 - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
Resolves: #1829822
* Mon Nov 12 2018 Jiri Kucera <jkucera@redhat.com> - 1.10.0-6 * Sun Jan 24 2021 Igor Raits <ignatenkobrain@fedoraproject.org> - 1.15.1-1
- Fix important static scanner issues - Update to 1.15.1
Resolves: #1602526
* Mon May 28 2018 Charalampos Stratakis <cstratak@redhat.com> - 1.10.0-5 * Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.14.0-2
- Conditionalize the python2 subpackage - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
- Build only the python3 bindings
* Sat Jul 18 2020 Igor Raits <ignatenkobrain@fedoraproject.org> - 1.14.0-1
- Update to 1.14.0
* Fri May 22 2020 Miro Hrončok <mhroncok@redhat.com> - 1.13.1-8
- Rebuilt for Python 3.9
* Thu Apr 30 2020 Tomáš Mráz <tmraz@redhat.com> - 1.13.1-7
- Fix FTBFS with gnupg-2.2.19 and above
* Wed Jan 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.13.1-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Thu Oct 03 2019 Miro Hrončok <mhroncok@redhat.com> - 1.13.1-5
- Rebuilt for Python 3.8.0rc1 (#1748018)
* Thu Aug 15 2019 Miro Hrončok <mhroncok@redhat.com> - 1.13.1-4
- Rebuilt for Python 3.8
* Sat Aug 10 2019 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 1.13.1-3
- Set real VERSION
* Sat Aug 3 2019 Peter Robinson <pbrobinson@fedoraproject.org> 1.13.1-2
- Move .pc files to devel so the base library doesn't pull in devel packages
* Mon Jul 29 18:46:42 CEST 2019 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 1.13.1-1
- Update to 1.13.1
* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.12.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Wed Jun 05 2019 Miro Hrončok <mhroncok@redhat.com> - 1.12.0-2
- Subpackage python2-gpg has been removed
See https://fedoraproject.org/wiki/Changes/Mass_Python_2_Package_Removal
* Sat Feb 16 2019 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 1.12.0-1
- Update to 1.12.0
* Fri Feb 01 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.11.1-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.11.1-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Fri Jun 15 2018 Miro Hrončok <mhroncok@redhat.com> - 1.11.1-2
- Rebuilt for Python 3.7
* Fri Apr 20 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 1.11.1-1
- Update to 1.11.1
* Thu Apr 19 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 1.11.0-1
- Update to 1.11.0
* Tue Apr 17 2018 Jonathan Lebon <jonathan@jlebon.com> - 1.10.0-4 * Tue Apr 17 2018 Jonathan Lebon <jonathan@jlebon.com> - 1.10.0-4
- Backport patch to tweak STATUS_FAILURE handling - Backport patch to tweak STATUS_FAILURE handling

1
sources Normal file
View File

@ -0,0 +1 @@
SHA512 (gpgme-1.15.1.licenses.tar.bz2) = beeddb53166b21db31904b42a94c0f01189c62df32370d920f52cdaac58d81bc299990c4653ae313a5d0dbb5785929ef95e3a42ca693a51b67de5caa2721fa16