OSDN Git Service

Fix bugs of file deletion code on transfer thread (but it is unused).
[ffftp/ffftp.git] / main.c
diff --git a/main.c b/main.c
index 704be47..dc72034 100644 (file)
--- a/main.c
+++ b/main.c
@@ -232,6 +232,70 @@ int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLi
        int Ret;\r
        BOOL Sts;\r
 \r
+       // プロセス保護\r
+#ifdef ENABLE_PROCESS_PROTECTION\r
+       DWORD ProtectLevel;\r
+       char* pCommand;\r
+       char Option[FMAX_PATH+1];\r
+       ProtectLevel = PROCESS_PROTECTION_NONE;\r
+       pCommand = lpszCmdLine;\r
+       while(pCommand = GetToken(pCommand, Option))\r
+       {\r
+               if(strcmp(Option, "--protect") == 0)\r
+               {\r
+                       ProtectLevel = PROCESS_PROTECTION_DEFAULT;\r
+                       break;\r
+               }\r
+               else if(strcmp(Option, "--protect-high") == 0)\r
+               {\r
+                       ProtectLevel = PROCESS_PROTECTION_HIGH;\r
+                       break;\r
+               }\r
+               else if(strcmp(Option, "--protect-medium") == 0)\r
+               {\r
+                       ProtectLevel = PROCESS_PROTECTION_MEDIUM;\r
+                       break;\r
+               }\r
+               else if(strcmp(Option, "--protect-low") == 0)\r
+               {\r
+                       ProtectLevel = PROCESS_PROTECTION_LOW;\r
+                       break;\r
+               }\r
+       }\r
+       if(ProtectLevel != PROCESS_PROTECTION_NONE)\r
+       {\r
+               SetProcessProtectionLevel(ProtectLevel);\r
+               if(!InitializeLoadLibraryHook())\r
+               {\r
+                       MessageBox(NULL, MSGJPN321, "FFFTP", MB_OK | MB_ICONERROR);\r
+                       return 0;\r
+               }\r
+#ifndef _DEBUG\r
+               if(IsDebuggerPresent())\r
+               {\r
+                       MessageBox(NULL, MSGJPN322, "FFFTP", MB_OK | MB_ICONERROR);\r
+                       return 0;\r
+               }\r
+#endif\r
+               if(!UnloadUntrustedModule())\r
+               {\r
+                       MessageBox(NULL, MSGJPN323, "FFFTP", MB_OK | MB_ICONERROR);\r
+                       return 0;\r
+               }\r
+#ifndef _DEBUG\r
+               if(RestartProtectedProcess(" --restart"))\r
+                       return 0;\r
+#endif\r
+               if(!EnableLoadLibraryHook(TRUE))\r
+               {\r
+                       MessageBox(NULL, MSGJPN324, "FFFTP", MB_OK | MB_ICONERROR);\r
+                       return 0;\r
+               }\r
+       }\r
+       else\r
+               InitializeLoadLibraryHook();\r
+#endif\r
+\r
 #ifdef DISABLE_MULTI_CPUS\r
        SetProcessAffinityMask(GetCurrentProcess(), 1);\r
 #endif\r
@@ -244,6 +308,7 @@ int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLi
 \r
        InitCommonControls();\r
 \r
+       // FTPS対応\r
 #ifdef USE_OPENSSL\r
        LoadOpenSSL();\r
 #endif\r
@@ -277,6 +342,7 @@ int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLi
                Ret = Msg.wParam;\r
        }\r
     UnregisterClass(FtpClassStr, hInstFtp);\r
+       // FTPS対応\r
 #ifdef USE_OPENSSL\r
        FreeOpenSSL();\r
 #endif\r
@@ -433,7 +499,7 @@ static int InitApp(LPSTR lpszCmdLine, int cmdShow)
                                        DispWindowTitle();\r
                                        // SourceForge.JPによるフォーク\r
 //                                     SetTaskMsg("FFFTP Ver." VER_STR " Copyright(C) 1997-2010 Sota & cooperators.");\r
-                                       SetTaskMsg("FFFTP Ver." VER_STR " Copyright(C) 1997-2010 Sota & cooperators.\r\nCopyright (C) 2011 Hiromichi Matsushima, Suguru Kawamoto.");\r
+                                       SetTaskMsg("FFFTP Ver." VER_STR " Copyright(C) 1997-2010 Sota & cooperators.\r\nCopyright (C) 2011 FFFTP Project (Hiromichi Matsushima, Suguru Kawamoto, IWAMOTO Kouichi, vitamin0x, unarist, raido).");\r
 \r
                                        if(ForceIni)\r
                                                SetTaskMsg("%s%s", MSGJPN283, IniPath);\r
@@ -1697,6 +1763,24 @@ static int AnalyzeComLine(char *Str, int *AutoConnect, int *CmdOption, char *unc
                        {\r
                                hHelpWin = HtmlHelp(NULL, AskHelpFilePath(), HH_HELP_CONTEXT, IDH_HELP_TOPIC_0000024);\r
                        }\r
+                       // プロセス保護\r
+#ifdef ENABLE_PROCESS_PROTECTION\r
+                       else if(strcmp(Tmp, "--restart") == 0)\r
+                       {\r
+                       }\r
+                       else if(strcmp(Tmp, "--protect") == 0)\r
+                       {\r
+                       }\r
+                       else if(strcmp(Tmp, "--protect-high") == 0)\r
+                       {\r
+                       }\r
+                       else if(strcmp(Tmp, "--protect-medium") == 0)\r
+                       {\r
+                       }\r
+                       else if(strcmp(Tmp, "--protect-low") == 0)\r
+                       {\r
+                       }\r
+#endif\r
                        else\r
                        {\r
                                SetTaskMsg(MSGJPN180, Tmp);\r
@@ -2683,12 +2767,29 @@ int AskAutoExit(void)
 int EnterMasterPasswordAndSet( int Res, HWND hWnd )\r
 {\r
        char buf[MAX_PASSWORD_LEN + 1];\r
+       // パスワードの入力欄を非表示\r
+       // 非表示にしたため新しいパスワードを2回入力させる\r
+       char buf1[MAX_PASSWORD_LEN + 1];\r
        char *p;\r
        int Flag;\r
 \r
        buf[0] = NUL;\r
        if( InputDialogBox(Res, hWnd, NULL, buf, MAX_PASSWORD_LEN + 1,\r
                &Flag, IDH_HELP_TOPIC_0000064) == YES){\r
+               // パスワードの入力欄を非表示\r
+               if(Res == newmasterpasswd_dlg)\r
+               {\r
+                       buf1[0] = NUL;\r
+                       if( InputDialogBox(Res, hWnd, NULL, buf1, MAX_PASSWORD_LEN + 1,\r
+                               &Flag, IDH_HELP_TOPIC_0000064) != YES){\r
+                               return 0;\r
+                       }\r
+                       if(strcmp(buf, buf1) != 0)\r
+                       {\r
+                               MessageBox(hWnd, MSGJPN325, "FFFTP", MB_OK | MB_ICONERROR);\r
+                               return 0;\r
+                       }\r
+               }\r
                /* 末尾の空白を削除 */\r
                RemoveTailingSpaces(buf);\r
                /* 先頭の空白を削除 */\r