From e2d61a6b306cece5f194d70c05e55352f525dff9 Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Mon, 5 Jan 2026 11:04:10 +0100 Subject: [PATCH] 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 1e7d0bafc6d25d98ec72ff419df65fda3cf147a7 #19643 Closes #20186 --- lib/curlx/fopen.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/curlx/fopen.c b/lib/curlx/fopen.c index 035632af4b..e9eb6df3b0 100644 --- a/lib/curlx/fopen.c +++ b/lib/curlx/fopen.c @@ -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);