1
0
mirror of git://git.gnupg.org/gnupg.git synced 2025-03-12 23:01:14 +01:00

Log the Windows system error code at more places.

* common/asshelp.c (log_libassuan_system_error): New.
* agent/gpg-agent.c (create_server_socket): Use new log function.
(handle_connections): Log system error code for a failed accept.
* dirmngr/dirmngr.c (handle_connections): Ditto.
* kbx/keyboxd.c (handle_connections): Ditto.
* scd/scdaemon.c (handle_connections): Ditto.
* tpm2d/tpm2daemon.c (handle_connections): Ditto.

* dirmngr/dirmngr.c (main): Log system error code for a failed bin.
* kbx/keyboxd.c (create_server_socket): Ditto.
* scd/scdaemon.c (create_server_socket): Ditto.
* tpm2d/tpm2daemon.c (create_server_socket): Ditto.
This commit is contained in:
Werner Koch 2025-03-05 10:24:14 +01:00
parent c68eca6363
commit 41cf76b8c1
No known key found for this signature in database
GPG Key ID: E3FDFF218E45B72B
7 changed files with 43 additions and 17 deletions

View File

@ -2329,18 +2329,12 @@ create_server_socket (char *name, int primary, int cygwin,
log_error (_("error getting nonce for the socket\n"));
if (rc == -1)
{
int w32err = 0;
if (assuan_sock_get_flag (fd, "w32_error", &w32err))
w32err = -1; /* Old Libassuan or not Windows. */
rc = gpg_error_from_syserror ();
log_libassuan_system_error (fd);
/* We use gpg_strerror here because it allows us to get strings
for some W32 socket error codes. */
log_error (_("error binding socket to '%s': %s\n"),
unaddr->sun_path, gpg_strerror (rc));
if (w32err != -1)
log_info ("system error code: %d (0x%x)\n", w32err, w32err);
assuan_sock_close (fd);
*name = 0; /* Inhibit removal of the socket by cleanup(). */
@ -3309,8 +3303,10 @@ handle_connections (gnupg_fd_t listen_fd,
(struct sockaddr *)&paddr, &plen);
if (fd == GNUPG_INVALID_FD)
{
gpg_error_t myerr = gpg_error_from_syserror ();
log_libassuan_system_error (listentbl[idx].l_fd);
log_error ("accept failed for %s: %s\n",
listentbl[idx].name, strerror (errno));
listentbl[idx].name, gpg_strerror (myerr));
}
else if ( !(ctrl = xtrycalloc (1, sizeof *ctrl)))
{

View File

@ -128,6 +128,21 @@ set_libassuan_log_cats (unsigned int newcats)
}
/* Get the last Windows error from an Assuan socket function and print
* the raw error code using log_info. */
void
log_libassuan_system_error (assuan_fd_t fd)
{
int w32err = 0;
if (assuan_sock_get_flag (fd, "w32_error", &w32err))
w32err = -1; /* Old Libassuan or not Windows. */
if (w32err != -1)
log_info ("system error code: %d (0x%x)\n", w32err, w32err);
}
static gpg_error_t
send_one_option (assuan_context_t ctx, gpg_err_source_t errsource,

View File

@ -46,6 +46,8 @@ void setup_libassuan_logging (unsigned int *debug_var_address,
const char *msg));
void set_libassuan_log_cats (unsigned int newcats);
void log_libassuan_system_error (assuan_fd_t fd);
gpg_error_t
send_pinentry_environment (assuan_context_t ctx,

View File

@ -1459,6 +1459,7 @@ main (int argc, char **argv)
log_error (_("error getting nonce for the socket\n"));
if (rc == -1)
{
log_libassuan_system_error (fd);
log_error (_("error binding socket to '%s': %s\n"),
serv_addr.sun_path,
gpg_strerror (gpg_error_from_syserror ()));
@ -2484,7 +2485,9 @@ handle_connections (assuan_fd_t listen_fd)
(struct sockaddr *)&paddr, &plen);
if (fd == GNUPG_INVALID_FD)
{
log_error ("accept failed: %s\n", strerror (errno));
gpg_error_t myerr = gpg_error_from_syserror ();
log_libassuan_system_error (listen_fd);
log_error ("accept failed: %s\n", gpg_strerror (myerr));
}
else
{

View File

@ -1202,8 +1202,10 @@ create_server_socket (char *name, int cygwin, assuan_sock_nonce_t *nonce)
{
/* We use gpg_strerror here because it allows us to get strings
for some W32 socket error codes. */
gpg_error_t myerr = gpg_error_from_syserror ();
log_libassuan_system_error (fd);
log_error (_("error binding socket to '%s': %s\n"),
unaddr->sun_path, gpg_strerror (gpg_error_from_syserror ()));
unaddr->sun_path, gpg_strerror (myerr));
assuan_sock_close (fd);
*name = 0; /* Inhibit removal of the socket by cleanup(). */
@ -1732,8 +1734,10 @@ handle_connections (gnupg_fd_t listen_fd)
(struct sockaddr *)&paddr, &plen);
if (fd == GNUPG_INVALID_FD)
{
gpg_error_t myerr = gpg_error_from_syserror ();
log_libassuan_system_error (listentbl[idx].l_fd);
log_error ("accept failed for %s: %s\n",
listentbl[idx].name, strerror (errno));
listentbl[idx].name, gpg_strerror (myerr));
}
else if ( !(ctrl = xtrycalloc (1, sizeof *ctrl)))
{

View File

@ -1195,9 +1195,10 @@ create_server_socket (const char *name, char **r_redir_name,
log_error (_("error getting nonce for the socket\n"));
if (rc == -1)
{
gpg_error_t myerr = gpg_error_from_syserror ();
log_libassuan_system_error (fd);
log_error (_("error binding socket to '%s': %s\n"),
unaddr->sun_path,
gpg_strerror (gpg_error_from_syserror ()));
unaddr->sun_path, gpg_strerror (myerr));
assuan_sock_close (fd);
scd_exit (2);
}
@ -1429,7 +1430,9 @@ handle_connections (gnupg_fd_t listen_fd)
(struct sockaddr *)&paddr, &plen);
if (fd == GNUPG_INVALID_FD)
{
log_error ("accept failed: %s\n", strerror (errno));
gpg_error_t myerr = gpg_error_from_syserror ();
log_libassuan_system_error (listen_fd);
log_error ("accept failed: %s\n", gpg_strerror (myerr));
}
else if ( !(ctrl = xtrycalloc (1, sizeof *ctrl)) )
{

View File

@ -973,9 +973,10 @@ create_server_socket (const char *name, char **r_redir_name,
log_error (_("error getting nonce for the socket\n"));
if (rc == -1)
{
gpg_error_t myerr = gpg_error_from_syserror ();
log_libassuan_system_error (fd);
log_error (_("error binding socket to '%s': %s\n"),
unaddr->sun_path,
gpg_strerror (gpg_error_from_syserror ()));
unaddr->sun_path, gpg_strerror (myerr));
assuan_sock_close (fd);
tpm2d_exit (2);
}
@ -1240,7 +1241,9 @@ handle_connections (gnupg_fd_t listen_fd)
(struct sockaddr *)&paddr, &plen);
if (fd == GNUPG_INVALID_FD)
{
log_error ("accept failed: %s\n", strerror (errno));
gpg_error_t myerr = gpg_error_from_syserror ();
log_libassuan_system_error (listen_fd);
log_error ("accept failed: %s\n", gpg_strerror (myerr));
}
else if ( !(ctrl = xtrycalloc (1, sizeof *ctrl)) )
{