Browse Source

Bug 2101: Site with a stored password protected by master password cannot be opened from command-line

https://winscp.net/tracker/2101
(cherry picked from commit 743f22074061ff31182e4f8310315905ae4a25bf)

Source commit: 5f4a970a7a64c48ca31ec49ae29b88cfdb59451b
Martin Prikryl 3 years ago
parent
commit
350f34c5c9
2 changed files with 6 additions and 4 deletions
  1. 5 3
      source/core/SessionInfo.cpp
  2. 1 1
      source/core/SessionInfo.h

+ 5 - 3
source/core/SessionInfo.cpp

@@ -1104,11 +1104,11 @@ UnicodeString __fastcall TSessionLog::LogSensitive(const UnicodeString & Str)
   }
 }
 //---------------------------------------------------------------------------
-UnicodeString __fastcall TSessionLog::GetCmdLineLog(TConfiguration * AConfiguration)
+UnicodeString __fastcall TSessionLog::GetCmdLineLog()
 {
   UnicodeString Result = CmdLine;
 
-  if (!AConfiguration->LogSensitive)
+  if (!Configuration->LogSensitive)
   {
     TManagementScript Script(StoredSessions, false);
     Script.MaskPasswordInCommandLine(Result, true);
@@ -1191,7 +1191,9 @@ void __fastcall TSessionLog::DoAddStartupInfo(TAddLogEntryEvent AddLogEntry, TCo
   ADF(L"Working directory: %s", (GetCurrentDir()));
   ADF(L"Process ID: %d", (int(GetCurrentProcessId())));
   ADF(L"Ancestor processes: %s", (GetAncestorProcessNames()));
-  ADF(L"Command-line: %s", (GetCmdLineLog(AConfiguration)));
+  // This logs even passwords, contrary to a session log.
+  // GetCmdLineLog requires master password, but we do not know it yet atm.
+  ADF(L"Command-line: %s", (CmdLine));
   if (AConfiguration->ActualLogProtocol >= 1)
   {
     GetGlobalOptions()->LogOptions(AddLogEntry);

+ 1 - 1
source/core/SessionInfo.h

@@ -300,7 +300,7 @@ private:
   void __fastcall DoAddStartupInfo(TSessionData * Data);
   UnicodeString __fastcall GetTlsVersionName(TTlsVersion TlsVersion);
   UnicodeString __fastcall LogSensitive(const UnicodeString & Str);
-  static UnicodeString __fastcall GetCmdLineLog(TConfiguration * AConfiguration);
+  UnicodeString __fastcall GetCmdLineLog();
   void __fastcall CheckSize(__int64 Addition);
   UnicodeString __fastcall LogPartFileName(const UnicodeString & BaseName, int Index);
   void __fastcall DoAddStartupInfoEntry(const UnicodeString & S);