mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-02 22:46:30 +02:00
Update tests.
This commit is contained in:
parent
b9f2c0daaf
commit
f5551672fb
10 changed files with 106 additions and 42 deletions
|
@ -1,3 +1,12 @@
|
|||
2010-05-11 Werner Koch <wk@g10code.com>
|
||||
|
||||
* agent.h (opt): Add field USE_STANDARD_SOCKET.
|
||||
* gpg-agent.c (use_standard_socket): Remove. Use new option instead.
|
||||
|
||||
* command.c (cmd_killagent, cmd_reloadagent): Provide command also
|
||||
for non-W32 platforms.
|
||||
(cmd_getinfo): New subcommands std_session_env and std_startup_env.
|
||||
|
||||
2010-05-03 Werner Koch <wk@g10code.com>
|
||||
|
||||
* gpg-agent.c (check_own_socket_thread): Do not release SOCKNAME
|
||||
|
|
|
@ -55,6 +55,9 @@ struct
|
|||
int batch; /* Batch mode */
|
||||
const char *homedir; /* Configuration directory name */
|
||||
|
||||
/* True if we are listening on the standard socket. */
|
||||
int use_standard_socket;
|
||||
|
||||
/* Environment setting gathered at program start or changed using the
|
||||
Assuan command UPDATESTARTUPTTY. */
|
||||
session_env_t startup_env;
|
||||
|
|
|
@ -59,10 +59,8 @@ struct server_local_s
|
|||
char *keydesc; /* Allocated description for the next key
|
||||
operation. */
|
||||
int pause_io_logging; /* Used to suppress I/O logging during a command */
|
||||
#ifdef HAVE_W32_SYSTEM
|
||||
int stopme; /* If set to true the agent will be terminated after
|
||||
the end of this session. */
|
||||
#endif
|
||||
int allow_pinentry_notify; /* Set if pinentry notifications should
|
||||
be done. */
|
||||
};
|
||||
|
@ -1591,18 +1589,20 @@ cmd_updatestartuptty (assuan_context_t ctx, char *line)
|
|||
|
||||
|
||||
|
||||
#ifdef HAVE_W32_SYSTEM
|
||||
static const char hlp_killagent[] =
|
||||
"KILLAGENT\n"
|
||||
"\n"
|
||||
"Under Windows we start the agent on the fly. Thus it also make\n"
|
||||
"sense to allow a client to stop the agent.";
|
||||
"If the agent has been started using a standard socket\n"
|
||||
"we allow a client to stop the agent.";
|
||||
static gpg_error_t
|
||||
cmd_killagent (assuan_context_t ctx, char *line)
|
||||
{
|
||||
ctrl_t ctrl = assuan_get_pointer (ctx);
|
||||
|
||||
(void)line;
|
||||
|
||||
if (!opt.use_standard_socket)
|
||||
return set_error (GPG_ERR_NOT_SUPPORTED, "no --use-standard-socket");
|
||||
|
||||
ctrl->server_local->stopme = 1;
|
||||
return gpg_error (GPG_ERR_EOF);
|
||||
|
@ -1612,8 +1612,8 @@ cmd_killagent (assuan_context_t ctx, char *line)
|
|||
static const char hlp_reloadagent[] =
|
||||
"RELOADAGENT\n"
|
||||
"\n"
|
||||
"As signals are inconvenient under Windows, we provide this command\n"
|
||||
"to allow reloading of the configuration.";
|
||||
"This command is an alternative to SIGHUP\n"
|
||||
"to reload the configuration.";
|
||||
static gpg_error_t
|
||||
cmd_reloadagent (assuan_context_t ctx, char *line)
|
||||
{
|
||||
|
@ -1623,7 +1623,6 @@ cmd_reloadagent (assuan_context_t ctx, char *line)
|
|||
agent_sighup_action ();
|
||||
return 0;
|
||||
}
|
||||
#endif /*HAVE_W32_SYSTEM*/
|
||||
|
||||
|
||||
|
||||
|
@ -1639,11 +1638,14 @@ static const char hlp_getinfo[] =
|
|||
" ssh_socket_name - Return the name of the ssh socket.\n"
|
||||
" scd_running - Return OK if the SCdaemon is already running.\n"
|
||||
" s2k_count - Return the calibrated S2K count.\n"
|
||||
" std_session_env - List the standard session environment.\n"
|
||||
" std_startup_env - List the standard startup environment.\n"
|
||||
" cmd_has_option\n"
|
||||
" - Returns OK if the command CMD implements the option OPT.";
|
||||
static gpg_error_t
|
||||
cmd_getinfo (assuan_context_t ctx, char *line)
|
||||
{
|
||||
ctrl_t ctrl = assuan_get_pointer (ctx);
|
||||
int rc = 0;
|
||||
|
||||
if (!strcmp (line, "version"))
|
||||
|
@ -1687,6 +1689,34 @@ cmd_getinfo (assuan_context_t ctx, char *line)
|
|||
snprintf (numbuf, sizeof numbuf, "%lu", get_standard_s2k_count ());
|
||||
rc = assuan_send_data (ctx, numbuf, strlen (numbuf));
|
||||
}
|
||||
else if (!strcmp (line, "std_session_env")
|
||||
|| !strcmp (line, "std_startup_env"))
|
||||
{
|
||||
int iterator;
|
||||
const char *name, *value;
|
||||
char *string;
|
||||
|
||||
iterator = 0;
|
||||
while ((name = session_env_list_stdenvnames (&iterator, NULL)))
|
||||
{
|
||||
value = session_env_getenv_or_default
|
||||
(line[5] == 't'? opt.startup_env:ctrl->session_env, name, NULL);
|
||||
if (value)
|
||||
{
|
||||
string = xtryasprintf ("%s=%s", name, value);
|
||||
if (!string)
|
||||
rc = gpg_error_from_syserror ();
|
||||
else
|
||||
{
|
||||
rc = assuan_send_data (ctx, string, strlen (string)+1);
|
||||
if (!rc)
|
||||
rc = assuan_send_data (ctx, NULL, 0);
|
||||
}
|
||||
if (rc)
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (!strncmp (line, "cmd_has_option", 14)
|
||||
&& (line[14] == ' ' || line[14] == '\t' || !line[14]))
|
||||
{
|
||||
|
@ -1883,10 +1913,8 @@ register_commands (assuan_context_t ctx)
|
|||
{ "GETVAL", cmd_getval, hlp_getval },
|
||||
{ "PUTVAL", cmd_putval, hlp_putval },
|
||||
{ "UPDATESTARTUPTTY", cmd_updatestartuptty, hlp_updatestartuptty },
|
||||
#ifdef HAVE_W32_SYSTEM
|
||||
{ "KILLAGENT", cmd_killagent, hlp_killagent },
|
||||
{ "RELOADAGENT", cmd_reloadagent,hlp_reloadagent },
|
||||
#endif
|
||||
{ "GETINFO", cmd_getinfo, hlp_getinfo },
|
||||
{ NULL }
|
||||
};
|
||||
|
@ -1993,10 +2021,8 @@ start_command_handler (ctrl_t ctrl, gnupg_fd_t listen_fd, gnupg_fd_t fd)
|
|||
|
||||
/* Cleanup. */
|
||||
assuan_release (ctx);
|
||||
#ifdef HAVE_W32_SYSTEM
|
||||
if (ctrl->server_local->stopme)
|
||||
agent_exit (0);
|
||||
#endif
|
||||
xfree (ctrl->server_local);
|
||||
ctrl->server_local = NULL;
|
||||
}
|
||||
|
|
|
@ -219,9 +219,6 @@ static int shutdown_pending;
|
|||
/* Counter for the currently running own socket checks. */
|
||||
static int check_own_socket_running;
|
||||
|
||||
/* True if we are listening on the standard socket. */
|
||||
static int use_standard_socket;
|
||||
|
||||
/* It is possible that we are currently running under setuid permissions */
|
||||
static int maybe_setuid = 1;
|
||||
|
||||
|
@ -631,7 +628,7 @@ main (int argc, char **argv )
|
|||
/* Set default options. */
|
||||
parse_rereadable_options (NULL, 0); /* Reset them to default values. */
|
||||
#ifdef USE_STANDARD_SOCKET
|
||||
use_standard_socket = 1;
|
||||
opt.use_standard_socket = 1;
|
||||
#endif
|
||||
|
||||
shell = getenv ("SHELL");
|
||||
|
@ -782,8 +779,8 @@ main (int argc, char **argv )
|
|||
case oXauthority: default_xauthority = xstrdup (pargs.r.ret_str);
|
||||
break;
|
||||
|
||||
case oUseStandardSocket: use_standard_socket = 1; break;
|
||||
case oNoUseStandardSocket: use_standard_socket = 0; break;
|
||||
case oUseStandardSocket: opt.use_standard_socket = 1; break;
|
||||
case oNoUseStandardSocket: opt.use_standard_socket = 0; break;
|
||||
|
||||
case oFakedSystemTime:
|
||||
{
|
||||
|
@ -862,9 +859,9 @@ main (int argc, char **argv )
|
|||
|
||||
if (gpgconf_list == 3)
|
||||
{
|
||||
if (use_standard_socket && !opt.quiet)
|
||||
if (opt.use_standard_socket && !opt.quiet)
|
||||
log_info ("configured to use the standard socket\n");
|
||||
agent_exit (!use_standard_socket);
|
||||
agent_exit (!opt.use_standard_socket);
|
||||
}
|
||||
else if (gpgconf_list == 2)
|
||||
agent_exit (0);
|
||||
|
@ -1438,7 +1435,7 @@ create_socket_name (char *standard_name, char *template)
|
|||
{
|
||||
char *name, *p;
|
||||
|
||||
if (use_standard_socket)
|
||||
if (opt.use_standard_socket)
|
||||
name = make_filename (opt.homedir, standard_name, NULL);
|
||||
else
|
||||
{
|
||||
|
@ -1504,7 +1501,7 @@ create_server_socket (char *name, int is_ssh, assuan_sock_nonce_t *nonce)
|
|||
|
||||
/* Our error code mapping on W32CE returns EEXIST thus we also test
|
||||
for this. */
|
||||
if (use_standard_socket && rc == -1
|
||||
if (opt.use_standard_socket && rc == -1
|
||||
&& (errno == EADDRINUSE
|
||||
#ifdef HAVE_W32_SYSTEM
|
||||
|| errno == EEXIST
|
||||
|
@ -1542,7 +1539,7 @@ create_server_socket (char *name, int is_ssh, assuan_sock_nonce_t *nonce)
|
|||
gpg_strerror (gpg_error_from_errno (errno)));
|
||||
|
||||
assuan_sock_close (fd);
|
||||
if (use_standard_socket)
|
||||
if (opt.use_standard_socket)
|
||||
*name = 0; /* Inhibit removal of the socket by cleanup(). */
|
||||
agent_exit (2);
|
||||
}
|
||||
|
@ -2169,7 +2166,7 @@ check_own_socket (void)
|
|||
char *sockname;
|
||||
pth_attr_t tattr;
|
||||
|
||||
if (!use_standard_socket)
|
||||
if (!opt.use_standard_socket)
|
||||
return; /* This check makes only sense in standard socket mode. */
|
||||
|
||||
if (check_own_socket_running || shutdown_pending)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue