1
0
Эх сурвалжийг харах

Bug 1687: Remembered passphrase is used as a password in generated script/code

https://winscp.net/tracker/1687

Source commit: 52791af23d2a6d1b9e67bcfea41ee6c0137cc06e
Martin Prikryl 7 жил өмнө
parent
commit
f2ae4cf398

+ 3 - 1
source/core/Terminal.cpp

@@ -1313,6 +1313,7 @@ void __fastcall TTerminal::Open()
         // Particularly to prevent reusing a wrong client certificate passphrase
         // in the next login attempt
         FRememberedPassword = UnicodeString();
+        FRememberedPasswordKind = TPromptKind(-1);
         FRememberedTunnelPassword = UnicodeString();
         throw;
       }
@@ -1672,6 +1673,7 @@ bool __fastcall TTerminal::DoPromptUser(TSessionData * /*Data*/, TPromptKind Kin
       else
       {
         GetPasswordSource()->FRememberedPassword = EncryptedPassword;
+        GetPasswordSource()->FRememberedPasswordKind = Kind;
       }
     }
   }
@@ -6459,7 +6461,7 @@ UnicodeString __fastcall TTerminal::GetPassword()
   {
     Result = SessionData->Password;
   }
-  else
+  else if (FRememberedPasswordKind != pkPassphrase)
   {
     Result = GetRememberedPassword();
   }

+ 1 - 0
source/core/Terminal.h

@@ -194,6 +194,7 @@ private:
   TSessionStatus FStatus;
   int FOpening;
   RawByteString FRememberedPassword;
+  TPromptKind FRememberedPasswordKind;
   RawByteString FRememberedTunnelPassword;
   TTunnelThread * FTunnelThread;
   TSecureShell * FTunnel;