浏览代码

Bug 1608: When using session name as a part of a path to a temporary directory, replace a slash separating a session folder from a session name with a dash instead of %2F

https://winscp.net/tracker/1608

Source commit: 16e3760770688b9690694866ead91c4a90e4db87
Martin Prikryl 7 年之前
父节点
当前提交
e84636838f
共有 2 个文件被更改,包括 5 次插入1 次删除
  1. 4 0
      source/core/Common.cpp
  2. 1 1
      source/forms/CustomScpExplorer.cpp

+ 4 - 0
source/core/Common.cpp

@@ -30,6 +30,7 @@ const char Bom[3] = "\xEF\xBB\xBF";
 const wchar_t TokenPrefix = L'%';
 const wchar_t NoReplacement = wchar_t(false);
 const wchar_t TokenReplacement = wchar_t(true);
+// Note similar list in MakeValidFileName
 const UnicodeString LocalInvalidChars(TraceInitStr(L"/\\:*?\"<>|"));
 const UnicodeString PasswordMask(TraceInitStr(L"***"));
 const UnicodeString Ellipsis(TraceInitStr(L"..."));
@@ -109,8 +110,10 @@ UnicodeString AnsiToString(const char * S, size_t Len)
   return UnicodeString(AnsiString(S, Len));
 }
 //---------------------------------------------------------------------------
+// Note similar function ValidLocalFileName
 UnicodeString MakeValidFileName(UnicodeString FileName)
 {
+  // Note similar list in LocalInvalidChars
   UnicodeString IllegalChars = L":;,=+<>|\"[] \\/?*";
   for (int Index = 0; Index < IllegalChars.Length(); Index++)
   {
@@ -569,6 +572,7 @@ static wchar_t * __fastcall ReplaceChar(
   return InvalidChar;
 }
 //---------------------------------------------------------------------------
+//  Note similar function MakeValidFileName
 UnicodeString __fastcall ValidLocalFileName(UnicodeString FileName)
 {
   return ValidLocalFileName(FileName, L'_', L"", LocalInvalidChars);

+ 1 - 1
source/forms/CustomScpExplorer.cpp

@@ -3058,7 +3058,7 @@ void __fastcall TCustomScpExplorerForm::TemporaryDirectoryForRemoteFiles(
 
   if (WinConfiguration->TemporaryDirectoryAppendSession)
   {
-    Result = IncludeTrailingBackslash(Result + CopyParam.ValidLocalPath(Terminal->SessionData->SessionName));
+    Result = IncludeTrailingBackslash(Result + MakeValidFileName(Terminal->SessionData->SessionName));
   }
 
   if (WinConfiguration->TemporaryDirectoryAppendPath)