From cd5a7481953ecef8e445ecd15474a787624dd0d6 Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Thu, 28 Sep 2017 00:11:16 +0200 Subject: [PATCH] Added patch to avoid unexpanding ComputerName in PathUnExpandEnvStrings. --- patches/patchinstall.sh | 16 +++++ ...tempt-to-unexpand-ComputerName-in-Pa.patch | 72 +++++++++++++++++++ .../shlwapi-PathUnExpandEnvStrings/definition | 1 + 3 files changed, 89 insertions(+) create mode 100644 patches/shlwapi-PathUnExpandEnvStrings/0001-shlwapi-Don-t-attempt-to-unexpand-ComputerName-in-Pa.patch create mode 100644 patches/shlwapi-PathUnExpandEnvStrings/definition diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index 9eae064f..647a74e3 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -376,6 +376,7 @@ patch_enable_all () enable_shell32_Toolbar_Bitmaps="$1" enable_shell32_UnixFS="$1" enable_shlwapi_AssocGetPerceivedType="$1" + enable_shlwapi_PathUnExpandEnvStrings="$1" enable_shlwapi_SHAddDataBlock="$1" enable_shlwapi_SHMapHandle="$1" enable_shlwapi_UrlCombine="$1" @@ -1405,6 +1406,9 @@ patch_enable () shlwapi-AssocGetPerceivedType) enable_shlwapi_AssocGetPerceivedType="$2" ;; + shlwapi-PathUnExpandEnvStrings) + enable_shlwapi_PathUnExpandEnvStrings="$2" + ;; shlwapi-SHAddDataBlock) enable_shlwapi_SHAddDataBlock="$2" ;; @@ -8287,6 +8291,18 @@ if test "$enable_shlwapi_AssocGetPerceivedType" -eq 1; then ) >> "$patchlist" fi +# Patchset shlwapi-PathUnExpandEnvStrings +# | +# | Modified files: +# | * dlls/shlwapi/path.c, dlls/shlwapi/tests/path.c +# | +if test "$enable_shlwapi_PathUnExpandEnvStrings" -eq 1; then + patch_apply shlwapi-PathUnExpandEnvStrings/0001-shlwapi-Don-t-attempt-to-unexpand-ComputerName-in-Pa.patch + ( + printf '%s\n' '+ { "Katayama Hirofumi MZ", "shlwapi: Don'\''t attempt to unexpand ComputerName in PathUnExpandEnvStrings.", 1 },'; + ) >> "$patchlist" +fi + # Patchset shlwapi-SHAddDataBlock # | # | Modified files: diff --git a/patches/shlwapi-PathUnExpandEnvStrings/0001-shlwapi-Don-t-attempt-to-unexpand-ComputerName-in-Pa.patch b/patches/shlwapi-PathUnExpandEnvStrings/0001-shlwapi-Don-t-attempt-to-unexpand-ComputerName-in-Pa.patch new file mode 100644 index 00000000..0195c35c --- /dev/null +++ b/patches/shlwapi-PathUnExpandEnvStrings/0001-shlwapi-Don-t-attempt-to-unexpand-ComputerName-in-Pa.patch @@ -0,0 +1,72 @@ +From 177a262f06e4278726e1d60b9dc9e5108a621bff Mon Sep 17 00:00:00 2001 +From: Katayama Hirofumi MZ +Date: Sat, 23 Sep 2017 03:41:32 +0900 +Subject: shlwapi: Don't attempt to unexpand ComputerName in + PathUnExpandEnvStrings. + +--- + dlls/shlwapi/path.c | 2 -- + dlls/shlwapi/tests/path.c | 18 ++++++++++++++++-- + 2 files changed, 16 insertions(+), 4 deletions(-) + +diff --git a/dlls/shlwapi/path.c b/dlls/shlwapi/path.c +index 3c07bb8d10a..f972f9d61cf 100644 +--- a/dlls/shlwapi/path.c ++++ b/dlls/shlwapi/path.c +@@ -4097,7 +4097,6 @@ BOOL WINAPI PathUnExpandEnvStringsA(LPCSTR path, LPSTR buffer, UINT buf_len) + + static const WCHAR allusersprofileW[] = {'%','A','L','L','U','S','E','R','S','P','R','O','F','I','L','E','%',0}; + static const WCHAR appdataW[] = {'%','A','P','P','D','A','T','A','%',0}; +-static const WCHAR computernameW[] = {'%','C','O','M','P','U','T','E','R','N','A','M','E','%',0}; + static const WCHAR programfilesW[] = {'%','P','r','o','g','r','a','m','F','i','l','e','s','%',0}; + static const WCHAR systemrootW[] = {'%','S','y','s','t','e','m','R','o','o','t','%',0}; + static const WCHAR systemdriveW[] = {'%','S','y','s','t','e','m','D','r','i','v','e','%',0}; +@@ -4134,7 +4133,6 @@ BOOL WINAPI PathUnExpandEnvStringsW(LPCWSTR path, LPWSTR buffer, UINT buf_len) + struct envvars_map envvars[] = { + { allusersprofileW, sizeof(allusersprofileW)/sizeof(WCHAR) }, + { appdataW, sizeof(appdataW)/sizeof(WCHAR) }, +- { computernameW, sizeof(computernameW)/sizeof(WCHAR) }, + { programfilesW, sizeof(programfilesW)/sizeof(WCHAR) }, + { systemrootW, sizeof(systemrootW)/sizeof(WCHAR) }, + { systemdriveW, sizeof(systemdriveW)/sizeof(WCHAR) }, +diff --git a/dlls/shlwapi/tests/path.c b/dlls/shlwapi/tests/path.c +index f780a78c68c..8fb2dc2c1e6 100644 +--- a/dlls/shlwapi/tests/path.c ++++ b/dlls/shlwapi/tests/path.c +@@ -1451,10 +1451,11 @@ static void test_PathUnExpandEnvStrings(void) + static const WCHAR sysrootW[] = {'%','S','y','s','t','e','m','R','o','o','t','%',0}; + static const WCHAR sysdriveW[] = {'%','S','y','s','t','e','m','D','r','i','v','e','%',0}; + static const WCHAR nonpathW[] = {'p','a','t','h',0}; ++ static const WCHAR computernameW[] = {'C','O','M','P','U','T','E','R','N','A','M','E',0}; + static const char sysrootA[] = "%SystemRoot%"; + static const char sysdriveA[] = "%SystemDrive%"; +- WCHAR pathW[MAX_PATH], buffW[MAX_PATH], sysdrvW[3]; +- char path[MAX_PATH], buff[MAX_PATH], sysdrvA[3], envvarA[10]; ++ WCHAR pathW[MAX_PATH], buffW[MAX_PATH], sysdrvW[3], envvarW[30]; ++ char path[MAX_PATH], buff[MAX_PATH], sysdrvA[3], envvarA[30]; + BOOL ret; + UINT len; + +@@ -1464,6 +1465,19 @@ static void test_PathUnExpandEnvStrings(void) + return; + } + ++ /* The value of ComputerName is not a path */ ++ ret = GetEnvironmentVariableA("COMPUTERNAME", envvarA, sizeof(envvarA)); ++ ok(ret, "got %d\n", ret); ++ SetLastError(0xdeadbeef); ++ ret = pPathUnExpandEnvStringsA(envvarA, buff, sizeof(buff)); ++ ok(!ret && GetLastError() == 0xdeadbeef, "got %d, error %d\n", ret, GetLastError()); ++ ++ ret = GetEnvironmentVariableW(computernameW, envvarW, sizeof(envvarW)/sizeof(WCHAR)); ++ ok(ret, "got %d\n", ret); ++ SetLastError(0xdeadbeef); ++ ret = pPathUnExpandEnvStringsW(envvarW, buffW, sizeof(buffW)/sizeof(WCHAR)); ++ ok(!ret && GetLastError() == 0xdeadbeef, "got %d, error %d\n", ret, GetLastError()); ++ + /* something that can't be represented with env var */ + strcpy(path, "somepath_name"); + strcpy(buff, "xx"); +-- +2.14.1 + diff --git a/patches/shlwapi-PathUnExpandEnvStrings/definition b/patches/shlwapi-PathUnExpandEnvStrings/definition new file mode 100644 index 00000000..1a080ac2 --- /dev/null +++ b/patches/shlwapi-PathUnExpandEnvStrings/definition @@ -0,0 +1 @@ +Fixes: Don't unexpand ComputerName in PathUnExpandEnvStrings