OSDN Git Service

Fix bugs of SSL connection management.
authors_kawamoto <s_kawamoto@users.sourceforge.jp>
Sat, 15 Oct 2011 17:42:25 +0000 (02:42 +0900)
committers_kawamoto <s_kawamoto@users.sourceforge.jp>
Sat, 15 Oct 2011 17:42:25 +0000 (02:42 +0900)
FFFTP_Eng_Release/FFFTP.exe
Release/FFFTP.exe
main.c
socketwrapper.c

index 091989f..c50c54c 100644 (file)
Binary files a/FFFTP_Eng_Release/FFFTP.exe and b/FFFTP_Eng_Release/FFFTP.exe differ
index 8374b77..16fab4b 100644 (file)
Binary files a/Release/FFFTP.exe and b/Release/FFFTP.exe differ
diff --git a/main.c b/main.c
index 72b34c3..7e31ba5 100644 (file)
--- a/main.c
+++ b/main.c
@@ -2837,10 +2837,15 @@ BOOL __stdcall SSLConfirmCallback(BOOL bVerified, LPCSTR Certificate, LPCSTR Com
        char* pm0;\r
        bResult = FALSE;\r
        sha_memory((char*)Certificate, (uint32)(strlen(Certificate) * sizeof(char)), (uint32*)&Hash);\r
-       for(i = 0; i < MAX_CERT_CACHE_HASH; i++)\r
+       i = 0;\r
+       while(i < MAX_CERT_CACHE_HASH)\r
        {\r
                if(memcmp(&CertificateCacheHash[i], &Hash, 20) == 0)\r
+               {\r
                        bResult = TRUE;\r
+                       break;\r
+               }\r
+               i++;\r
        }\r
        if(!bResult)\r
        {\r
index acf23c3..a43f5bf 100644 (file)
@@ -381,13 +381,18 @@ BOOL AttachSSL(SOCKET s, SOCKET parent)
                                                }\r
                                                EnterCriticalSection(&g_OpenSSLLock);\r
                                        }\r
-                                       if(ConfirmSSLCertificate(*ppSSL))\r
+                                       if(r)\r
                                        {\r
-                                       }\r
-                                       else\r
-                                       {\r
-                                               DetachSSL(s);\r
-                                               r = FALSE;\r
+                                               if(ConfirmSSLCertificate(*ppSSL))\r
+                                               {\r
+                                               }\r
+                                               else\r
+                                               {\r
+                                                       LeaveCriticalSection(&g_OpenSSLLock);\r
+                                                       DetachSSL(s);\r
+                                                       r = FALSE;\r
+                                                       EnterCriticalSection(&g_OpenSSLLock);\r
+                                               }\r
                                        }\r
                                }\r
                                else\r
@@ -431,7 +436,7 @@ BOOL IsSSLAttached(SOCKET s)
        ppSSL = FindSSLPointerFromSocket(s);\r
        LeaveCriticalSection(&g_OpenSSLLock);\r
        if(!ppSSL)\r
-               return TRUE;\r
+               return FALSE;\r
        return TRUE;\r
 }\r
 \r