OSDN Git Service

Fix bugs of automatic software update.
authors_kawamoto <s_kawamoto@users.sourceforge.jp>
Sun, 8 Jun 2014 13:54:42 +0000 (22:54 +0900)
committers_kawamoto <s_kawamoto@users.sourceforge.jp>
Sun, 8 Jun 2014 13:54:42 +0000 (22:54 +0900)
FFFTP_Eng_Release/FFFTP.exe
Release/FFFTP.exe
socketwrapper.c
socketwrapper.h
updater.c

index 46f2a81..8138f62 100644 (file)
Binary files a/FFFTP_Eng_Release/FFFTP.exe and b/FFFTP_Eng_Release/FFFTP.exe differ
index 257fb42..710febc 100644 (file)
Binary files a/Release/FFFTP.exe and b/Release/FFFTP.exe differ
index 3dad22c..c55a578 100644 (file)
@@ -539,6 +539,8 @@ BOOL DecryptSignature(const char* PublicKey, const void* pIn, DWORD InLength, vo
        EVP_PKEY* pPKEY;\r
        RSA* pRSA;\r
        int i;\r
+       if(!g_bOpenSSLLoaded)\r
+               return FALSE;\r
        bResult = FALSE;\r
        if(pBIO = p_BIO_new_mem_buf((void*)PublicKey, sizeof(char) * strlen(PublicKey)))\r
        {\r
@@ -566,29 +568,44 @@ BOOL DecryptSignature(const char* PublicKey, const void* pIn, DWORD InLength, vo
 \r
 // ハッシュ計算\r
 // 他にも同等の関数はあるが主にマルウェア対策のための冗長化\r
-void GetHashSHA1(const void* pData, DWORD Size, void* pHash)\r
+BOOL GetHashSHA1(const void* pData, DWORD Size, void* pHash)\r
 {\r
+       if(!g_bOpenSSLLoaded)\r
+               return FALSE;\r
        p_SHA1((const unsigned char*)pData, (size_t)Size, (unsigned char*)pHash);\r
+       return TRUE;\r
 }\r
 \r
-void GetHashSHA224(const void* pData, DWORD Size, void* pHash)\r
+BOOL GetHashSHA224(const void* pData, DWORD Size, void* pHash)\r
 {\r
+       if(!g_bOpenSSLLoaded)\r
+               return FALSE;\r
        p_SHA224((const unsigned char*)pData, (size_t)Size, (unsigned char*)pHash);\r
+       return TRUE;\r
 }\r
 \r
-void GetHashSHA256(const void* pData, DWORD Size, void* pHash)\r
+BOOL GetHashSHA256(const void* pData, DWORD Size, void* pHash)\r
 {\r
+       if(!g_bOpenSSLLoaded)\r
+               return FALSE;\r
        p_SHA256((const unsigned char*)pData, (size_t)Size, (unsigned char*)pHash);\r
+       return TRUE;\r
 }\r
 \r
-void GetHashSHA384(const void* pData, DWORD Size, void* pHash)\r
+BOOL GetHashSHA384(const void* pData, DWORD Size, void* pHash)\r
 {\r
+       if(!g_bOpenSSLLoaded)\r
+               return FALSE;\r
        p_SHA384((const unsigned char*)pData, (size_t)Size, (unsigned char*)pHash);\r
+       return TRUE;\r
 }\r
 \r
-void GetHashSHA512(const void* pData, DWORD Size, void* pHash)\r
+BOOL GetHashSHA512(const void* pData, DWORD Size, void* pHash)\r
 {\r
+       if(!g_bOpenSSLLoaded)\r
+               return FALSE;\r
        p_SHA512((const unsigned char*)pData, (size_t)Size, (unsigned char*)pHash);\r
+       return TRUE;\r
 }\r
 \r
 // SSLセッションを開始\r
index 583abc7..0415e5b 100644 (file)
@@ -21,11 +21,11 @@ void SetSSLConfirmCallback(LPSSLCONFIRMCALLBACK pCallback);
 BOOL SetSSLRootCertificate(const void* pData, DWORD Length);\r
 BOOL IsHostNameMatched(LPCSTR HostName, LPCSTR CommonName);\r
 BOOL DecryptSignature(const char* PublicKey, const void* pIn, DWORD InLength, void* pOut, DWORD OutLength, DWORD* pOutLength);\r
-void GetHashSHA1(const void* pData, DWORD Size, void* pHash);\r
-void GetHashSHA224(const void* pData, DWORD Size, void* pHash);\r
-void GetHashSHA256(const void* pData, DWORD Size, void* pHash);\r
-void GetHashSHA384(const void* pData, DWORD Size, void* pHash);\r
-void GetHashSHA512(const void* pData, DWORD Size, void* pHash);\r
+BOOL GetHashSHA1(const void* pData, DWORD Size, void* pHash);\r
+BOOL GetHashSHA224(const void* pData, DWORD Size, void* pHash);\r
+BOOL GetHashSHA256(const void* pData, DWORD Size, void* pHash);\r
+BOOL GetHashSHA384(const void* pData, DWORD Size, void* pHash);\r
+BOOL GetHashSHA512(const void* pData, DWORD Size, void* pHash);\r
 BOOL AttachSSL(SOCKET s, SOCKET parent, BOOL* pbAborted);\r
 BOOL DetachSSL(SOCKET s);\r
 BOOL IsSSLAttached(SOCKET s);\r
index 66fd783..e044920 100644 (file)
--- a/updater.c
+++ b/updater.c
@@ -180,20 +180,22 @@ BOOL CheckForUpdates(BOOL bDownload, LPCTSTR DownloadDir, DWORD* pVersion, LPTST
                                {\r
                                        if(ReadFileViaHTTP(&Buf1, sizeof(Buf1), &Length, HTTP_USER_AGENT, UPDATE_SERVER, UPDATE_LIST_PATH))\r
                                        {\r
-                                               GetHashSHA512(&Buf1, Length, &Hash);\r
-                                               if(memcmp(&Hash, &UpdateHash.ListHash, 64) == 0)\r
+                                               if(GetHashSHA512(&Buf1, Length, &Hash))\r
                                                {\r
-                                                       if(Length >= sizeof(UPDATE_LIST))\r
+                                                       if(memcmp(&Hash, &UpdateHash.ListHash, 64) == 0)\r
                                                        {\r
-                                                               bResult = TRUE;\r
-                                                               pUpdateList = (UPDATE_LIST*)&Buf1;\r
-                                                               if(pUpdateList->Version > *pVersion)\r
+                                                               if(Length >= sizeof(UPDATE_LIST))\r
                                                                {\r
-                                                                       *pVersion = pUpdateList->Version;\r
-                                                                       _tcscpy(pVersionString, pUpdateList->VersionString);\r
+                                                                       bResult = TRUE;\r
+                                                                       pUpdateList = (UPDATE_LIST*)&Buf1;\r
+                                                                       if(pUpdateList->Version > *pVersion)\r
+                                                                       {\r
+                                                                               *pVersion = pUpdateList->Version;\r
+                                                                               _tcscpy(pVersionString, pUpdateList->VersionString);\r
+                                                                       }\r
+                                                                       if(bDownload)\r
+                                                                               bResult = PrepareUpdates(&Buf1, Length, DownloadDir);\r
                                                                }\r
-                                                               if(bDownload)\r
-                                                                       bResult = PrepareUpdates(&Buf1, Length, DownloadDir);\r
                                                        }\r
                                                }\r
                                        }\r
@@ -240,14 +242,16 @@ BOOL PrepareUpdates(void* pList, DWORD ListLength, LPCTSTR DownloadDir)
                                {\r
                                        if(ReadFileViaHTTP(pBuf, 16777216, &Length, HTTP_USER_AGENT, UPDATE_SERVER, pUpdateList->File[i].SrcPath))\r
                                        {\r
-                                               GetHashSHA512(pBuf, Length, &Hash);\r
-                                               if(memcmp(&Hash, &pUpdateList->File[i].SrcHash, 64) == 0)\r
+                                               if(GetHashSHA512(pBuf, Length, &Hash))\r
                                                {\r
-                                                       _tcscpy(Path, DownloadDir);\r
-                                                       _tcscat(Path, _T("\\"));\r
-                                                       _tcscat(Path, pUpdateList->File[i].DstPath);\r
-                                                       if(SaveMemoryToFileWithTimestamp(Path, pBuf, Length, &pUpdateList->File[i].Timestamp))\r
-                                                               b = TRUE;\r
+                                                       if(memcmp(&Hash, &pUpdateList->File[i].SrcHash, 64) == 0)\r
+                                                       {\r
+                                                               _tcscpy(Path, DownloadDir);\r
+                                                               _tcscat(Path, _T("\\"));\r
+                                                               _tcscat(Path, pUpdateList->File[i].DstPath);\r
+                                                               if(SaveMemoryToFileWithTimestamp(Path, pBuf, Length, &pUpdateList->File[i].Timestamp))\r
+                                                                       b = TRUE;\r
+                                                       }\r
                                                }\r
                                        }\r
                                }\r