Steve Lhomme pushed to branch master at VideoLAN / VLC
Commits:
64c45c66 by Steve Lhomme at 2026-02-21T16:17:31+00:00
contrib: gcrypt: call SHGetFolderPathA directly
This will avoid unloading "shell32.dll" from a random thread. It crashes if
it was automatically loaded from a loaded DLL.
The API available since Windows XP [^1] but not in UWP where we should
not read files from the system anyway.
[^1]:
https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shgetfolderpatha
- - - - -
2 changed files:
- + contrib/src/gcrypt/0001-hwfeatures-call-SHGetFolderPathA-directly.patch
- contrib/src/gcrypt/rules.mak
Changes:
=====================================
contrib/src/gcrypt/0001-hwfeatures-call-SHGetFolderPathA-directly.patch
=====================================
@@ -0,0 +1,50 @@
+From 5b428fd55e846f3a6c22ab33af5bdc0edcd4ea8b Mon Sep 17 00:00:00 2001
+From: Steve Lhomme <[email protected]>
+Date: Wed, 18 Feb 2026 16:47:26 +0100
+Subject: [PATCH] hwfeatures: call SHGetFolderPathA directly
+
+This will avoid unloading "shell32.dll" from a random thread. It crashes if
+it was automatically loaded from a loaded DLL.
+The API available since Windows XP [^1] but not in UWP where we should
+not read files from the system anyway.
+
+[^1]
https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shgetfolderpatha
+---
+ src/hwfeatures.c | 12 +++---------
+ 1 file changed, 3 insertions(+), 9 deletions(-)
+
+diff --git a/src/hwfeatures.c b/src/hwfeatures.c
+index 1b107e63..697bd7ed 100644
+--- a/src/hwfeatures.c
++++ b/src/hwfeatures.c
+@@ -320,24 +320,18 @@ _gcry_get_sysconfdir (void)
+
+ if (!appdata)
+ {
+- HRESULT (WINAPI *func)(HWND,int,HANDLE,DWORD,LPSTR);
+- void *handle;
++#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
+ char *buf;
+
+- handle = LoadLibraryEx ("shell32.dll", NULL, 0);
+- if (handle)
+- {
+ buf = xmalloc (MAX_PATH+17+1); /* Space for "/GNU/etc/gcrypt/" */
+- func = (void *)GetProcAddress (handle, "SHGetFolderPathA");
+- if (func && func (NULL, CSIDL_COMMON_APPDATA, NULL, 0, buf) >= 0)
++ if (SHGetFolderPathA (NULL, CSIDL_COMMON_APPDATA, NULL, 0, buf) >=
0)
+ {
+ appdata = xmalloc (strlen (buf) + 17 + 1);
+ strcpy (appdata, buf);
+ strcat (appdata, "/GNU/etc/gcrypt/");
+ }
+ xfree (buf);
+- CloseHandle (handle);
+- }
++#endif
+ if (!appdata)
+ appdata = xstrdup ("c:/ProgramData/GNU/etc/gcrypt/");
+ }
+--
+2.52.0.windows.1
+
=====================================
contrib/src/gcrypt/rules.mak
=====================================
@@ -23,6 +23,7 @@ gcrypt: libgcrypt-$(GCRYPT_VERSION).tar.bz2 .sum-gcrypt
$(APPLY) $(SRC)/gcrypt/disable-tests-compilation.patch
$(APPLY)
$(SRC)/gcrypt/0007-random-don-t-use-API-s-that-are-forbidden-in-UWP-app.patch
$(APPLY)
$(SRC)/gcrypt/0008-random-only-use-wincrypt-in-UWP-builds-if-WINSTORECO.patch
+ $(APPLY)
$(SRC)/gcrypt/0001-hwfeatures-call-SHGetFolderPathA-directly.patch
# don't use getpid in UWP as it's not actually available
$(APPLY) $(SRC)/gcrypt/gcrypt-uwp-getpid.patch
View it on GitLab:
https://code.videolan.org/videolan/vlc/-/commit/64c45c66b025d4915a11a2b7fb6fb97c7794cde7
--
View it on GitLab:
https://code.videolan.org/videolan/vlc/-/commit/64c45c66b025d4915a11a2b7fb6fb97c7794cde7
You're receiving this email because of your account on code.videolan.org.
VideoLAN code repository instance_______________________________________________
vlc-commits mailing list
[email protected]
https://mailman.videolan.org/listinfo/vlc-commits