OSDN Git Service

Enhance the security of routines for changing a master password.
authors_kawamoto <s_kawamoto@users.sourceforge.jp>
Sat, 21 Apr 2012 10:38:55 +0000 (19:38 +0900)
committers_kawamoto <s_kawamoto@users.sourceforge.jp>
Sat, 21 Apr 2012 10:38:55 +0000 (19:38 +0900)
FFFTP_Eng_Release/FFFTP.exe
Release/FFFTP.exe
common.h
main.c
registry.c

index f104c6e..f78c391 100644 (file)
Binary files a/FFFTP_Eng_Release/FFFTP.exe and b/FFFTP_Eng_Release/FFFTP.exe differ
index c5c5246..c7978e9 100644 (file)
Binary files a/Release/FFFTP.exe and b/Release/FFFTP.exe differ
index eb4dae4..f21c08c 100644 (file)
--- a/common.h
+++ b/common.h
@@ -1714,6 +1714,8 @@ void ClearRegistry(void);
 // ポータブル版判定\r
 void ClearIni(void);\r
 void SetMasterPassword( const char* );\r
+// セキュリティ強化\r
+void GetMasterPassword(char*);\r
 int GetMasterPasswordStatus(void);\r
 int ValidateMasterPassword(void);\r
 DWORD LoadHideDriveListRegistry(void);\r
diff --git a/main.c b/main.c
index 0377eab..52fc39d 100644 (file)
--- a/main.c
+++ b/main.c
@@ -1426,9 +1426,34 @@ static LRESULT CALLBACK FtpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA
                                                if( DialogBox(hInstFtp, MAKEINTRESOURCE(forcepasschange_dlg), hWnd, ExeEscDialogProc) != YES){\r
                                                        break;\r
                                                }\r
+                                               // セキュリティ強化\r
+                                               if(EnterMasterPasswordAndSet(newmasterpasswd_dlg, hWnd) != 0)\r
+                                                       SetTaskMsg(MSGJPN303);\r
                                        }\r
-                                       if( EnterMasterPasswordAndSet( newmasterpasswd_dlg, hWnd ) != 0 ){\r
-                                               SetTaskMsg( MSGJPN303 );\r
+                                       // セキュリティ強化\r
+//                                     if( EnterMasterPasswordAndSet( newmasterpasswd_dlg, hWnd ) != 0 ){\r
+//                                             SetTaskMsg( MSGJPN303 );\r
+//                                     }\r
+                                       else if(GetMasterPasswordStatus() == PASSWORD_OK)\r
+                                       {\r
+                                               char Password[MAX_PASSWORD_LEN + 1];\r
+                                               GetMasterPassword(Password);\r
+                                               SetMasterPassword(NULL);\r
+                                               while(ValidateMasterPassword() == YES && GetMasterPasswordStatus() == PASSWORD_UNMATCH)\r
+                                               {\r
+                                                       if(EnterMasterPasswordAndSet(masterpasswd_dlg, NULL) == 0)\r
+                                                               break;\r
+                                               }\r
+                                               if(GetMasterPasswordStatus() == PASSWORD_OK && EnterMasterPasswordAndSet(newmasterpasswd_dlg, hWnd) != 0)\r
+                                               {\r
+                                                       SetTaskMsg(MSGJPN303);\r
+                                                       SaveRegistry();\r
+                                               }\r
+                                               else\r
+                                               {\r
+                                                       SetMasterPassword(Password);\r
+                                                       ValidateMasterPassword();\r
+                                               }\r
                                        }\r
                                        break;\r
 \r
index 95fada4..f2f7e05 100644 (file)
@@ -221,6 +221,12 @@ void SetMasterPassword( const char* Password )
        IsMasterPasswordError = PASSWORD_OK;\r
 }\r
 \r
+// セキュリティ強化\r
+void GetMasterPassword(char* Password)\r
+{\r
+       strcpy(Password, SecretKey);\r
+}\r
+\r
 /*----- マスタパスワードの状態取得 ----------------------------------------------\r
 *\r
 *      Parameter\r