[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