diff options
author | Werner Koch <[email protected]> | 2023-07-04 07:19:05 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2023-10-05 13:30:42 +0000 |
commit | 1e9ac18f8818c4a2df50988e956190e8de27556b (patch) | |
tree | c19d47b58f91141fd2fcd439f2df0fe9f77916d1 | |
parent | sm: Improve the octet string cramming for pkcs#12 (diff) | |
download | gnupg-1e9ac18f8818c4a2df50988e956190e8de27556b.tar.gz gnupg-1e9ac18f8818c4a2df50988e956190e8de27556b.zip |
common,w32: Add missing GetLastError->errno mapping.
* common/iobuf.c (file_filter, sock_filter): Add missing mapping.
--
GnuPG-bug-id: 6528
(cherry picked from commit 5e94470d053ec93f79acb03635e67839a5a1e6a8)
Also includes commit a3be97df4ddfce008dcc6e877e9fb98c71656ec6
-rw-r--r-- | common/iobuf.c | 7 | ||||
-rw-r--r-- | common/sysutils.c | 6 | ||||
-rw-r--r-- | common/sysutils.h | 2 |
3 files changed, 9 insertions, 6 deletions
diff --git a/common/iobuf.c b/common/iobuf.c index 2504fb718..2752e3937 100644 --- a/common/iobuf.c +++ b/common/iobuf.c @@ -542,8 +542,8 @@ file_filter (void *opaque, int control, iobuf_t chain, byte * buf, { if (size && !WriteFile (f, p, nbytes, &n, NULL)) { - int ec = (int) GetLastError (); - rc = gpg_error_from_errno (ec); + int ec = gnupg_w32_set_errno (-1); + rc = gpg_error_from_syserror (); log_error ("%s: write error: %s (ec=%d)\n", a->fname, gpg_strerror (rc), ec); break; @@ -820,7 +820,8 @@ sock_filter (void *opaque, int control, iobuf_t chain, byte * buf, if (n == SOCKET_ERROR) { int ec = (int) WSAGetLastError (); - rc = gpg_error_from_errno (ec); + gnupg_w32_set_errno (ec); + rc = gpg_error_from_syserror (); log_error ("socket write error: ec=%d\n", ec); break; } diff --git a/common/sysutils.c b/common/sysutils.c index 7676ab74a..0cd5f49f2 100644 --- a/common/sysutils.c +++ b/common/sysutils.c @@ -319,15 +319,17 @@ map_w32_to_errno (DWORD w32_err) #endif /*HAVE_W32_SYSTEM*/ -/* Set ERRNO from the Windows error. EC may be -1 to use the last error. */ +/* Set ERRNO from the Windows error. EC may be -1 to use the last + * error. Returns the Windows error code. */ #ifdef HAVE_W32_SYSTEM -void +int gnupg_w32_set_errno (int ec) { /* FIXME: Replace by gpgrt_w32_set_errno. */ if (ec == -1) ec = GetLastError (); _set_errno (map_w32_to_errno (ec)); + return ec; } #endif /*HAVE_W32_SYSTEM*/ diff --git a/common/sysutils.h b/common/sysutils.h index e22156b0a..d33e9c16c 100644 --- a/common/sysutils.h +++ b/common/sysutils.h @@ -107,7 +107,7 @@ int gnupg_inotify_has_name (int fd, const char *name); #ifdef HAVE_W32_SYSTEM -void gnupg_w32_set_errno (int ec); +int gnupg_w32_set_errno (int ec); void *w32_get_user_sid (void); #include "../common/w32help.h" |