Changeset View
Changeset View
Standalone View
Standalone View
src/engine-gpg.c
Show First 20 Lines • Show All 134 Lines • ▼ Show 20 Lines | struct | ||||
char *keyword; /* what has been requested (malloced) */ | char *keyword; /* what has been requested (malloced) */ | ||||
engine_command_handler_t fnc; | engine_command_handler_t fnc; | ||||
void *fnc_value; | void *fnc_value; | ||||
} cmd; | } cmd; | ||||
struct gpgme_io_cbs io_cbs; | struct gpgme_io_cbs io_cbs; | ||||
gpgme_pinentry_mode_t pinentry_mode; | gpgme_pinentry_mode_t pinentry_mode; | ||||
char request_origin[10]; | char request_origin[10]; | ||||
char auto_key_locate[100]; | |||||
struct { | struct { | ||||
unsigned int no_symkey_cache : 1; | unsigned int no_symkey_cache : 1; | ||||
unsigned int offline : 1; | unsigned int offline : 1; | ||||
unsigned int ignore_mdc_error : 1; | unsigned int ignore_mdc_error : 1; | ||||
} flags; | } flags; | ||||
/* NULL or the data object fed to --override_session_key-fd. */ | /* NULL or the data object fed to --override_session_key-fd. */ | ||||
▲ Show 20 Lines • Show All 489 Lines • ▼ Show 20 Lines | if (ctx->request_origin && have_gpg_version (gpg, "2.2.6")) | ||||
if (strlen (ctx->request_origin) + 1 > sizeof gpg->request_origin) | if (strlen (ctx->request_origin) + 1 > sizeof gpg->request_origin) | ||||
strcpy (gpg->request_origin, "xxx"); /* Too long - force error */ | strcpy (gpg->request_origin, "xxx"); /* Too long - force error */ | ||||
else | else | ||||
strcpy (gpg->request_origin, ctx->request_origin); | strcpy (gpg->request_origin, ctx->request_origin); | ||||
} | } | ||||
else | else | ||||
*gpg->request_origin = 0; | *gpg->request_origin = 0; | ||||
if (ctx->auto_key_locate && have_gpg_version (gpg, "2.0.10")) | |||||
{ | |||||
if (strlen (ctx->auto_key_locate) + 1 > sizeof gpg->auto_key_locate) | |||||
strcpy (gpg->auto_key_locate, "xxx"); /* Too long - force error */ | |||||
else | |||||
strcpy (gpg->auto_key_locate, ctx->auto_key_locate); | |||||
} | |||||
else | |||||
*gpg->auto_key_locate = 0; | |||||
werner: if you really want the check for a gpg version, I would use 2.1.18 instead.
Instead of… | |||||
gpg->flags.no_symkey_cache = (ctx->no_symkey_cache | gpg->flags.no_symkey_cache = (ctx->no_symkey_cache | ||||
&& have_gpg_version (gpg, "2.2.7")); | && have_gpg_version (gpg, "2.2.7")); | ||||
gpg->flags.offline = (ctx->offline && have_gpg_version (gpg, "2.1.23")); | gpg->flags.offline = (ctx->offline && have_gpg_version (gpg, "2.1.23")); | ||||
gpg->flags.ignore_mdc_error = !!ctx->ignore_mdc_error; | gpg->flags.ignore_mdc_error = !!ctx->ignore_mdc_error; | ||||
} | } | ||||
▲ Show 20 Lines • Show All 283 Lines • ▼ Show 20 Lines | if (*gpg->request_origin) | ||||
int saved_err = gpg_error_from_syserror (); | int saved_err = gpg_error_from_syserror (); | ||||
free (fd_data_map); | free (fd_data_map); | ||||
free_argv (argv); | free_argv (argv); | ||||
return saved_err; | return saved_err; | ||||
} | } | ||||
argc++; | argc++; | ||||
} | } | ||||
if (*gpg->auto_key_locate) | |||||
{ | |||||
argv[argc] = _gpgme_strconcat ("--auto-key-locate=", | |||||
gpg->auto_key_locate, NULL); | |||||
if (!argv[argc]) | |||||
{ | |||||
int saved_err = gpg_error_from_syserror (); | |||||
free (fd_data_map); | |||||
free_argv (argv); | |||||
return saved_err; | |||||
} | |||||
argc++; | |||||
} | |||||
if (gpg->flags.no_symkey_cache) | if (gpg->flags.no_symkey_cache) | ||||
{ | { | ||||
argv[argc] = strdup ("--no-symkey-cache"); | argv[argc] = strdup ("--no-symkey-cache"); | ||||
if (!argv[argc]) | if (!argv[argc]) | ||||
{ | { | ||||
int saved_err = gpg_error_from_syserror (); | int saved_err = gpg_error_from_syserror (); | ||||
free (fd_data_map); | free (fd_data_map); | ||||
free_argv (argv); | free_argv (argv); | ||||
▲ Show 20 Lines • Show All 2,342 Lines • Show Last 20 Lines |
if you really want the check for a gpg version, I would use 2.1.18 instead.
Instead of allocating a 100 byte array it is easier to
and release that in gpg_release. Adding the option to the command line will also be easier.