OSDN Git Service

Fix bugs process protection.
[ffftp/ffftp.git] / main.c
diff --git a/main.c b/main.c
index 4cae7c0..2f3eacb 100644 (file)
--- a/main.c
+++ b/main.c
@@ -208,6 +208,8 @@ int MirUpDelNotify = YES;
 int MirDownDelNotify = YES; \r
 int FolderAttr = NO;\r
 int FolderAttrNum = 777;\r
+// 同時接続対応\r
+int MaxThreadCount = 1;\r
 \r
 \r
 \r
@@ -230,6 +232,54 @@ int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLi
        int Ret;\r
        BOOL Sts;\r
 \r
+       // プロセス保護\r
+#ifdef ENABLE_PROCESS_PROTECTION\r
+       BOOL bProtect;\r
+       char* pCommand;\r
+       char Option[FMAX_PATH+1];\r
+       bProtect = FALSE;\r
+       pCommand = lpszCmdLine;\r
+       while(pCommand = GetToken(pCommand, Option))\r
+       {\r
+               if(strcmp(Option, "--protect") == 0)\r
+               {\r
+                       bProtect = TRUE;\r
+                       break;\r
+               }\r
+       }\r
+       if(bProtect)\r
+       {\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
@@ -242,6 +292,7 @@ int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLi
 \r
        InitCommonControls();\r
 \r
+       // FTPS対応\r
 #ifdef USE_OPENSSL\r
        LoadOpenSSL();\r
 #endif\r
@@ -275,6 +326,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
@@ -1695,6 +1747,15 @@ 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
+#endif\r
                        else\r
                        {\r
                                SetTaskMsg(MSGJPN180, Tmp);\r
@@ -2613,7 +2674,6 @@ int BackgrndMessageProc(void)
        int Ret;\r
 \r
        Ret = NO;\r
-       SendMessage(GetMainHwnd(), WM_NULL, 0, 0);\r
        while(PeekMessage(&Msg, NULL, 0, 0, PM_REMOVE))\r
        {\r
                if(!HtmlHelp(NULL, NULL, HH_PRETRANSLATEMESSAGE, (DWORD)&Msg))\r