1
0
Fork 0
mirror of git://git.gnupg.org/gnupg.git synced 2025-07-03 22:56:33 +02:00

Replace all calls to access by gnupg_access

* common/sysutils.c (gnupg_access): New.  Replace all calls to access
by this wrapper.
* common/homedir.c (w32_shgetfolderpath): Change to return UTF-8
directory name.
(standard_homedir): Adjust for change.
(w32_commondir, gnupg_cachedir): Ditto.
--

Also use SHGetFolderPathW instead of SHGetFolderPathA on Windows.

This is required to correctly handle non-ascii filenames on Windows.

GnuPG-bug-id: 5098
This commit is contained in:
Werner Koch 2020-10-20 10:43:55 +02:00
parent 228836f79f
commit c94ee1386e
No known key found for this signature in database
GPG key ID: E3FDFF218E45B72B
28 changed files with 151 additions and 128 deletions

View file

@ -161,6 +161,7 @@ static int
blob_filecopy (int mode, const char *fname, KEYBOXBLOB blob,
int secret, int for_openpgp, off_t start_offset)
{
gpg_err_code_t ec;
FILE *fp, *newfp;
int rc=0;
char *bakfname = NULL;
@ -170,8 +171,8 @@ blob_filecopy (int mode, const char *fname, KEYBOXBLOB blob,
/* Open the source file. Because we do a rename, we have to check the
permissions of the file */
if (access (fname, W_OK))
return gpg_error_from_syserror ();
if ((ec = gnupg_access (fname, W_OK)))
return gpg_error (ec);
fp = fopen (fname, "rb");
if (mode == FILECOPY_INSERT && !fp && errno == ENOENT)
@ -626,6 +627,7 @@ keybox_delete (KEYBOX_HANDLE hd)
int
keybox_compress (KEYBOX_HANDLE hd)
{
gpg_err_code_t ec;
int read_rc, rc;
const char *fname;
FILE *fp, *newfp;
@ -651,8 +653,8 @@ keybox_compress (KEYBOX_HANDLE hd)
/* Open the source file. Because we do a rename, we have to check the
permissions of the file */
if (access (fname, W_OK))
return gpg_error_from_syserror ();
if ((ec = gnupg_access (fname, W_OK)))
return gpg_error (ec);
fp = fopen (fname, "rb");
if (!fp && errno == ENOENT)