diff options
author | Werner Koch <wk@gnupg.org> | 2023-05-23 14:50:22 +0200 |
---|---|---|
committer | Werner Koch <wk@gnupg.org> | 2023-05-23 14:50:22 +0200 |
commit | 48b56485548e11e901b762f39f9dcd14aa650184 (patch) | |
tree | 0d6256d39b8820970654b7900d324b7730b326bf /common | |
parent | sm: Emit STATUS_FAILURE for non-implemented commands. (diff) | |
download | gnupg2-48b56485548e11e901b762f39f9dcd14aa650184.tar.xz gnupg2-48b56485548e11e901b762f39f9dcd14aa650184.zip |
common,w32: Set a proper error code when creating an output file.
* common/iobuf.c (direct_open) [W32]: Set errno.
(fd_cache_open): Ditto.
--
Diffstat (limited to 'common')
-rw-r--r-- | common/iobuf.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/common/iobuf.c b/common/iobuf.c index 62cde27f9..825b97704 100644 --- a/common/iobuf.c +++ b/common/iobuf.c @@ -311,6 +311,13 @@ direct_open (const char *fname, const char *mode, int mode700) { hfile = CreateFileW (wfname, da, sm, NULL, cd, FILE_ATTRIBUTE_NORMAL, NULL); + if (hfile == INVALID_HANDLE_VALUE) + { + gnupg_w32_set_errno (-1); + if (DBG_IOBUF) + log_debug ("iobuf:direct_open '%s' CreateFile failed: %s\n", + fname, gpg_strerror (gpg_error_from_syserror())); + } xfree (wfname); } else @@ -426,8 +433,9 @@ fd_cache_open (const char *fname, const char *mode) #ifdef HAVE_W32_SYSTEM if (SetFilePointer (fp, 0, NULL, FILE_BEGIN) == 0xffffffff) { - log_error ("rewind file failed on handle %p: ec=%d\n", - fp, (int) GetLastError ()); + int ec = (int) GetLastError (); + log_error ("rewind file failed on handle %p: ec=%d\n", fp, ec); + gnupg_w32_set_errno (ec); fp = GNUPG_INVALID_FD; } #else |