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; | |||||
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 297 Lines • ▼ Show 20 Lines | gpg_release (void *engine) | ||||
if (gpg->status.buffer) | if (gpg->status.buffer) | ||||
free (gpg->status.buffer); | free (gpg->status.buffer); | ||||
if (gpg->colon.buffer) | if (gpg->colon.buffer) | ||||
free (gpg->colon.buffer); | free (gpg->colon.buffer); | ||||
if (gpg->argv) | if (gpg->argv) | ||||
free_argv (gpg->argv); | free_argv (gpg->argv); | ||||
if (gpg->cmd.keyword) | if (gpg->cmd.keyword) | ||||
free (gpg->cmd.keyword); | free (gpg->cmd.keyword); | ||||
free (gpg->auto_key_locate); | |||||
gpgme_data_release (gpg->override_session_key); | gpgme_data_release (gpg->override_session_key); | ||||
gpgme_data_release (gpg->diagnostics); | gpgme_data_release (gpg->diagnostics); | ||||
free (gpg); | free (gpg); | ||||
} | } | ||||
▲ Show 20 Lines • Show All 190 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.1.18")) | |||||
{ | |||||
if (gpg->auto_key_locate) | |||||
free (gpg->auto_key_locate); | |||||
gpg->auto_key_locate = _gpgme_strconcat ("--auto-key-locate=", | |||||
ctx->auto_key_locate, NULL); | |||||
} | |||||
gpg->flags.no_symkey_cache = (ctx->no_symkey_cache | gpg->flags.no_symkey_cache = (ctx->no_symkey_cache | ||||
werner: if you really want the check for a gpg version, I would use 2.1.18 instead.
Instead of… | |||||
&& 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 282 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] = strdup (gpg->auto_key_locate); | |||||
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,388 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.