curlx_win32_fopen: use _fsopen()/_wfsopen() with _SH_DENYNO

Replacing `fopen_s()`/`_wfopen_s()`, to allow customizing share mode,
and keep the sharing mode as was with `fopen()`/`_wopen()` earlier and
as used in `_sopen_s()`/`_wsopen_s()`.

The replaced functions used `_SH_SECURE` internally. Otherwise they are
identical to the replacements.

Ref: https://learn.microsoft.com/cpp/c-runtime-library/reference/fsopen-wfsopen

Reported-by: Jay Satiro
Fixes #20155
Ref: #20156
Follow-up to 1e7d0bafc6 #19643
Closes #20186
This commit is contained in:
Viktor Szakats 2026-01-05 11:04:10 +01:00
parent 64350280d3
commit e2d61a6b30
No known key found for this signature in database
GPG key ID: B5ABD165E2AEF201

View file

@ -348,7 +348,7 @@ FILE *curlx_win32_fopen(const char *filename, const char *mode)
target = fixed;
else
target = filename_w;
errno = _wfopen_s(&result, target, mode_w);
result = _wfsopen(target, mode_w, _SH_DENYNO);
}
else
/* !checksrc! disable ERRNOVAR 1 */
@ -360,7 +360,7 @@ FILE *curlx_win32_fopen(const char *filename, const char *mode)
target = fixed;
else
target = filename;
errno = fopen_s(&result, target, mode);
result = _fsopen(target, mode, _SH_DENYNO);
#endif
CURLX_FREE(fixed);