Bug in gpgme 1.1 - gpgme_engine_check_version()

Stéphane Corthésy stephane at sente.ch
Sun Oct 30 13:00:02 CET 2005


The call to gpgme_engine_check_version() will not return correct  
results if, just before, you call gpgme_set_engine_info() with an  
executable path not pointing to gpg: gpgme_engine_check_version()  
returns 0 (if /usr/local/bin/gpg is OK), whereas it should return a  
GPG_ERR_INV_ENGINE error, according to documentation. Here's a test  


    gcc -o test test.c `gpgme-config --cflags --libs`
#include <gpgme.h>
#include <stdio.h>
#include <locale.h>

int main(int argc, char **argv){
     gpgme_error_t   anError;

     setlocale (LC_ALL, "");
     printf("Checking version\n");
     gpgme_check_version (NULL);

     gpgme_set_locale (NULL, LC_CTYPE, setlocale (LC_CTYPE, NULL));
     gpgme_set_locale (NULL, LC_MESSAGES, setlocale (LC_MESSAGES,  

     printf("Checking default configuration\n");
     anError = gpgme_engine_check_version(GPGME_PROTOCOL_OpenPGP);
     if(anError != GPG_ERR_NO_ERROR)
         return anError;

     printf("Changing executable path\n");
     anError = gpgme_set_engine_info(GPGME_PROTOCOL_OpenPGP, "/dummy/ 
path", NULL);
     if(anError != GPG_ERR_NO_ERROR)
         return anError;

     printf("Checking new configuration: ");
     anError = gpgme_engine_check_version(GPGME_PROTOCOL_OpenPGP);
     printf("%d\n", anError); /* anError  should be  

     return 0;

More information about the Gnupg-devel mailing list