• R/O
  • HTTP
  • SSH
  • HTTPS

Commit

Tags
Keine Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

FFFTPのソースコードです。


Commit MetaInfo

Revision5a1386b87710e85b4609536a735ce97106f39133 (tree)
Zeit2014-06-08 22:54:42
Autors_kawamoto <s_kawamoto@user...>
Commiters_kawamoto

Log Message

Fix bugs of automatic software update.

Ändern Zusammenfassung

Diff

Binary files a/FFFTP_Eng_Release/FFFTP.exe and b/FFFTP_Eng_Release/FFFTP.exe differ
Binary files a/Release/FFFTP.exe and b/Release/FFFTP.exe differ
--- a/socketwrapper.c
+++ b/socketwrapper.c
@@ -539,6 +539,8 @@ BOOL DecryptSignature(const char* PublicKey, const void* pIn, DWORD InLength, vo
539539 EVP_PKEY* pPKEY;
540540 RSA* pRSA;
541541 int i;
542+ if(!g_bOpenSSLLoaded)
543+ return FALSE;
542544 bResult = FALSE;
543545 if(pBIO = p_BIO_new_mem_buf((void*)PublicKey, sizeof(char) * strlen(PublicKey)))
544546 {
@@ -566,29 +568,44 @@ BOOL DecryptSignature(const char* PublicKey, const void* pIn, DWORD InLength, vo
566568
567569 // ハッシュ計算
568570 // 他にも同等の関数はあるが主にマルウェア対策のための冗長化
569-void GetHashSHA1(const void* pData, DWORD Size, void* pHash)
571+BOOL GetHashSHA1(const void* pData, DWORD Size, void* pHash)
570572 {
573+ if(!g_bOpenSSLLoaded)
574+ return FALSE;
571575 p_SHA1((const unsigned char*)pData, (size_t)Size, (unsigned char*)pHash);
576+ return TRUE;
572577 }
573578
574-void GetHashSHA224(const void* pData, DWORD Size, void* pHash)
579+BOOL GetHashSHA224(const void* pData, DWORD Size, void* pHash)
575580 {
581+ if(!g_bOpenSSLLoaded)
582+ return FALSE;
576583 p_SHA224((const unsigned char*)pData, (size_t)Size, (unsigned char*)pHash);
584+ return TRUE;
577585 }
578586
579-void GetHashSHA256(const void* pData, DWORD Size, void* pHash)
587+BOOL GetHashSHA256(const void* pData, DWORD Size, void* pHash)
580588 {
589+ if(!g_bOpenSSLLoaded)
590+ return FALSE;
581591 p_SHA256((const unsigned char*)pData, (size_t)Size, (unsigned char*)pHash);
592+ return TRUE;
582593 }
583594
584-void GetHashSHA384(const void* pData, DWORD Size, void* pHash)
595+BOOL GetHashSHA384(const void* pData, DWORD Size, void* pHash)
585596 {
597+ if(!g_bOpenSSLLoaded)
598+ return FALSE;
586599 p_SHA384((const unsigned char*)pData, (size_t)Size, (unsigned char*)pHash);
600+ return TRUE;
587601 }
588602
589-void GetHashSHA512(const void* pData, DWORD Size, void* pHash)
603+BOOL GetHashSHA512(const void* pData, DWORD Size, void* pHash)
590604 {
605+ if(!g_bOpenSSLLoaded)
606+ return FALSE;
591607 p_SHA512((const unsigned char*)pData, (size_t)Size, (unsigned char*)pHash);
608+ return TRUE;
592609 }
593610
594611 // SSLセッションを開始
--- a/socketwrapper.h
+++ b/socketwrapper.h
@@ -21,11 +21,11 @@ void SetSSLConfirmCallback(LPSSLCONFIRMCALLBACK pCallback);
2121 BOOL SetSSLRootCertificate(const void* pData, DWORD Length);
2222 BOOL IsHostNameMatched(LPCSTR HostName, LPCSTR CommonName);
2323 BOOL DecryptSignature(const char* PublicKey, const void* pIn, DWORD InLength, void* pOut, DWORD OutLength, DWORD* pOutLength);
24-void GetHashSHA1(const void* pData, DWORD Size, void* pHash);
25-void GetHashSHA224(const void* pData, DWORD Size, void* pHash);
26-void GetHashSHA256(const void* pData, DWORD Size, void* pHash);
27-void GetHashSHA384(const void* pData, DWORD Size, void* pHash);
28-void GetHashSHA512(const void* pData, DWORD Size, void* pHash);
24+BOOL GetHashSHA1(const void* pData, DWORD Size, void* pHash);
25+BOOL GetHashSHA224(const void* pData, DWORD Size, void* pHash);
26+BOOL GetHashSHA256(const void* pData, DWORD Size, void* pHash);
27+BOOL GetHashSHA384(const void* pData, DWORD Size, void* pHash);
28+BOOL GetHashSHA512(const void* pData, DWORD Size, void* pHash);
2929 BOOL AttachSSL(SOCKET s, SOCKET parent, BOOL* pbAborted);
3030 BOOL DetachSSL(SOCKET s);
3131 BOOL IsSSLAttached(SOCKET s);
--- a/updater.c
+++ b/updater.c
@@ -180,20 +180,22 @@ BOOL CheckForUpdates(BOOL bDownload, LPCTSTR DownloadDir, DWORD* pVersion, LPTST
180180 {
181181 if(ReadFileViaHTTP(&Buf1, sizeof(Buf1), &Length, HTTP_USER_AGENT, UPDATE_SERVER, UPDATE_LIST_PATH))
182182 {
183- GetHashSHA512(&Buf1, Length, &Hash);
184- if(memcmp(&Hash, &UpdateHash.ListHash, 64) == 0)
183+ if(GetHashSHA512(&Buf1, Length, &Hash))
185184 {
186- if(Length >= sizeof(UPDATE_LIST))
185+ if(memcmp(&Hash, &UpdateHash.ListHash, 64) == 0)
187186 {
188- bResult = TRUE;
189- pUpdateList = (UPDATE_LIST*)&Buf1;
190- if(pUpdateList->Version > *pVersion)
187+ if(Length >= sizeof(UPDATE_LIST))
191188 {
192- *pVersion = pUpdateList->Version;
193- _tcscpy(pVersionString, pUpdateList->VersionString);
189+ bResult = TRUE;
190+ pUpdateList = (UPDATE_LIST*)&Buf1;
191+ if(pUpdateList->Version > *pVersion)
192+ {
193+ *pVersion = pUpdateList->Version;
194+ _tcscpy(pVersionString, pUpdateList->VersionString);
195+ }
196+ if(bDownload)
197+ bResult = PrepareUpdates(&Buf1, Length, DownloadDir);
194198 }
195- if(bDownload)
196- bResult = PrepareUpdates(&Buf1, Length, DownloadDir);
197199 }
198200 }
199201 }
@@ -240,14 +242,16 @@ BOOL PrepareUpdates(void* pList, DWORD ListLength, LPCTSTR DownloadDir)
240242 {
241243 if(ReadFileViaHTTP(pBuf, 16777216, &Length, HTTP_USER_AGENT, UPDATE_SERVER, pUpdateList->File[i].SrcPath))
242244 {
243- GetHashSHA512(pBuf, Length, &Hash);
244- if(memcmp(&Hash, &pUpdateList->File[i].SrcHash, 64) == 0)
245+ if(GetHashSHA512(pBuf, Length, &Hash))
245246 {
246- _tcscpy(Path, DownloadDir);
247- _tcscat(Path, _T("\\"));
248- _tcscat(Path, pUpdateList->File[i].DstPath);
249- if(SaveMemoryToFileWithTimestamp(Path, pBuf, Length, &pUpdateList->File[i].Timestamp))
250- b = TRUE;
247+ if(memcmp(&Hash, &pUpdateList->File[i].SrcHash, 64) == 0)
248+ {
249+ _tcscpy(Path, DownloadDir);
250+ _tcscat(Path, _T("\\"));
251+ _tcscat(Path, pUpdateList->File[i].DstPath);
252+ if(SaveMemoryToFileWithTimestamp(Path, pBuf, Length, &pUpdateList->File[i].Timestamp))
253+ b = TRUE;
254+ }
251255 }
252256 }
253257 }