[git] GPGME - branch, master, updated. gpgme-1.9.0-88-g0c1244a
by Werner Koch
cvs at cvs.gnupg.org
Mon Dec 4 12:13:23 CET 2017
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GnuPG Made Easy".
The branch, master has been updated
via 0c1244a2b7e30ab0610ae70166e1b5d0219782c3 (commit)
from 3cf9aedc92b6c65d2cb34037e52b9a299637d03b (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 0c1244a2b7e30ab0610ae70166e1b5d0219782c3
Author: Werner Koch <wk at gnupg.org>
Date: Mon Dec 4 12:08:31 2017 +0100
core: Also check for a failed selftest in gpgm_data_new.
* src/data.c (_gpgme_data_new): Check for failed selftest.
* tests/run-support.h (make_filename): Print a message on mallooc
failure.
(init_gpgme_basic): New.
* tests/run-identify.c (main): Call init_gpgme_basic becuase we do not
need to setup a protocol.
* tests/t-data.c: Define PGM and include run-support.h.
(make_filename): Remove.
(main): Call init_gpgme_basic.
--
Note: This patch may break applications which used gpgme_data but no
gpgme_new without having called the required gpgme_check_version.
GPGME can be used without a protocol for example to work with the data
object abstraction. Thus a call to gpgme_data_new also needs to check
the result of the core selftests - including on whether
gpgme_check_version has been called.
Signed-off-by: Werner Koch <wk at gnupg.org>
diff --git a/doc/gpgme.texi b/doc/gpgme.texi
index 8dcc86e..3b461ba 100644
--- a/doc/gpgme.texi
+++ b/doc/gpgme.texi
@@ -683,9 +683,10 @@ uses, this function provides a run-time check if the necessary
features are provided by the installed version of the library.
If a selftest fails, the function may still succeed. Selftest errors
-are returned later when invoking @code{gpgme_new}, so that a detailed
-error code can be returned (historically, @code{gpgme_check_version}
-does not return a detailed error code).
+are returned later when invoking @code{gpgme_new} or
+ at code{gpgme-data_new}, so that a detailed error code can be returned
+(historically, @code{gpgme_check_version} does not return a detailed
+error code).
@end deftypefun
diff --git a/src/data.c b/src/data.c
index e4e9ee3..7ae5b32 100644
--- a/src/data.c
+++ b/src/data.c
@@ -46,6 +46,10 @@ _gpgme_data_new (gpgme_data_t *r_dh, struct _gpgme_data_cbs *cbs)
return gpg_error (GPG_ERR_INV_VALUE);
*r_dh = NULL;
+
+ if (_gpgme_selftest)
+ return _gpgme_selftest;
+
dh = calloc (1, sizeof (*dh));
if (!dh)
return gpg_error_from_syserror ();
diff --git a/tests/run-identify.c b/tests/run-identify.c
index 01e9671..9361fa2 100644
--- a/tests/run-identify.c
+++ b/tests/run-identify.c
@@ -102,7 +102,7 @@ main (int argc, char **argv)
}
- init_gpgme (GPGME_PROTOCOL_OpenPGP);
+ init_gpgme_basic ();
for (; argc; argc--, argv++)
{
diff --git a/tests/run-support.h b/tests/run-support.h
index 841b223..6a2170b 100644
--- a/tests/run-support.h
+++ b/tests/run-support.h
@@ -107,7 +107,11 @@ make_filename (const char *fname)
srcdir = ".";
buf = malloc (strlen(srcdir) + strlen(fname) + 2);
if (!buf)
- exit (8);
+ {
+ fprintf (stderr, "%s:%d: could not allocate string: %s\n",
+ __FILE__, __LINE__, strerror (errno));
+ exit (8);
+ }
strcpy (buf, srcdir);
strcat (buf, "/");
strcat (buf, fname);
@@ -116,17 +120,23 @@ make_filename (const char *fname)
void
-init_gpgme (gpgme_protocol_t proto)
+init_gpgme_basic (void)
{
- gpgme_error_t err;
-
gpgme_check_version (NULL);
setlocale (LC_ALL, "");
gpgme_set_locale (NULL, LC_CTYPE, setlocale (LC_CTYPE, NULL));
#ifndef HAVE_W32_SYSTEM
gpgme_set_locale (NULL, LC_MESSAGES, setlocale (LC_MESSAGES, NULL));
#endif
+}
+
+
+void
+init_gpgme (gpgme_protocol_t proto)
+{
+ gpg_error_t err;
+ init_gpgme_basic ();
err = gpgme_engine_check_version (proto);
fail_if_err (err);
}
diff --git a/tests/t-data.c b/tests/t-data.c
index fe2d59e..c214de7 100644
--- a/tests/t-data.c
+++ b/tests/t-data.c
@@ -30,8 +30,10 @@
#include <string.h>
#include <errno.h>
-#include <gpgme.h>
+#define PGM "t-data"
+#include "run-support.h"
+#undef fail_if_err
#define fail_if_err(a) do { if(a) { \
fprintf (stderr, "%s:%d: (%i) gpgme_error_t " \
"%s\n", __FILE__, __LINE__, round, \
@@ -39,27 +41,6 @@
exit (1); } \
} while(0)
-static char *
-make_filename (const char *fname)
-{
- const char *srcdir = getenv ("srcdir");
- char *buf;
-
- if (!srcdir)
- srcdir = ".";
- buf = malloc (strlen(srcdir) + strlen(fname) + 2 );
- if (!buf)
- {
- fprintf (stderr, "%s:%d: could not allocate string: %s\n",
- __FILE__, __LINE__, strerror (errno));
- exit (1);
- }
- strcpy (buf, srcdir);
- strcat (buf, "/");
- strcat (buf, fname);
- return buf;
-}
-
typedef enum
{
TEST_INITIALIZER,
@@ -203,6 +184,8 @@ main (void)
gpgme_error_t err = 0;
gpgme_data_t data;
+ init_gpgme_basic ();
+
while (++round)
{
switch (round)
-----------------------------------------------------------------------
Summary of changes:
doc/gpgme.texi | 7 ++++---
src/data.c | 4 ++++
tests/run-identify.c | 2 +-
tests/run-support.h | 18 ++++++++++++++----
tests/t-data.c | 27 +++++----------------------
5 files changed, 28 insertions(+), 30 deletions(-)
hooks/post-receive
--
GnuPG Made Easy
http://git.gnupg.org
More information about the Gnupg-commits
mailing list