| Revision | d0e4e6863e99bd8b789d96db00994b0e6f0b9370 (tree) |
|---|---|
| Time | 2012-02-23 00:47:38 |
| Author | qwerty2501 <riot313@gmai...> |
| Commiter | qwerty2501 |
operaクッキー対応
| @@ -1,6 +1,6 @@ | ||
| 1 | 1 | |
| 2 | 2 | #include "shareCookie.h" |
| 3 | - | |
| 3 | +#define WINDEBUGER_NOPRINTING | |
| 4 | 4 | |
| 5 | 5 | #include <shlobj.h> |
| 6 | 6 | #include <Wininet.h> |
| @@ -24,8 +24,8 @@ static sqlite3_stmt *googleChromeCookieStmt; // | ||
| 24 | 24 | static CRITICAL_SECTION googleChromeCs; //グーグルクロームのクッキー取得用クリティカルセクション |
| 25 | 25 | |
| 26 | 26 | |
| 27 | -static WCHAR safariCookiePath[_MAX_PATH]; //サファリのクッキーパス | |
| 28 | - | |
| 27 | +static WCHAR safariCookiePath[_MAX_PATH]; //Safariのクッキーパス | |
| 28 | +static WCHAR operaCookiePath[_MAX_PATH]; //Operaのクッキーパス | |
| 29 | 29 | |
| 30 | 30 | typedef COOKIE_RESULT (*SelfParseCookieCallBack)(LPCSTR targetString,LPCSTR targetEndPointer,LPWSTR cookie,SIZE_T bufSize,LPCWSTR key,LPCWSTR domein); |
| 31 | 31 |
| @@ -169,6 +169,11 @@ VOID InitializeShareCookie(LPCWSTR appDataPath,LPCWSTR localAppDataPath){ | ||
| 169 | 169 | wcscpy(safariCookiePath,appDataPath); |
| 170 | 170 | wcscat(safariCookiePath,L"Apple Computer\\Safari\\Cookies\\Cookies.binarycookies"); |
| 171 | 171 | |
| 172 | + //Operaの設定 | |
| 173 | + // | |
| 174 | + wcscpy(operaCookiePath,appDataPath); | |
| 175 | + wcscat(operaCookiePath,L"Opera\\Opera\\cookies4.dat"); | |
| 176 | + | |
| 172 | 177 | return; |
| 173 | 178 | } |
| 174 | 179 |
| @@ -215,7 +220,7 @@ COOKIE_RESULT GetCookie(BROWSERTYPE browserType,LPWSTR cookie,SIZE_T bufSize, LP | ||
| 215 | 220 | //オペラの場合 |
| 216 | 221 | case BT_OPERA: |
| 217 | 222 | |
| 218 | - return SelfParseCookie(NULL,cookie,bufSize,key,domein,GetCookieOpera); | |
| 223 | + return SelfParseCookie(operaCookiePath,cookie,bufSize,key,domein,GetCookieOpera); | |
| 219 | 224 | |
| 220 | 225 | |
| 221 | 226 | //サファリの場合 |
| @@ -648,9 +653,81 @@ end: | ||
| 648 | 653 | /// |
| 649 | 654 | static INLINE COOKIE_RESULT GetCookieOpera(LPCSTR targetString,LPCSTR targetEndPointer,LPWSTR cookies,SIZE_T bufSize, LPCWSTR key,LPCWSTR domein){ |
| 650 | 655 | |
| 651 | - | |
| 656 | + COOKIE_RESULT result = COOKIE_ERR_UNKNOWN; | |
| 657 | + CHAR mb_key[_MAX_PATH]; | |
| 658 | + CHAR mb_domein[_MAX_PATH]; | |
| 659 | + LPCSTR cookiePointer; | |
| 660 | + LPCSTR keyPointer; | |
| 661 | + SIZE_T mb_keyLen; | |
| 662 | + | |
| 663 | + if(ARRAY_LENGTH(mb_key) < GetLenToMB(CP_THREAD_ACP,key)){ | |
| 664 | + | |
| 665 | + goto keybuffbigerr; | |
| 666 | + | |
| 667 | + } else if(ARRAY_LENGTH(mb_domein) < GetLenToMB(CP_THREAD_ACP,domein) ){ | |
| 668 | + | |
| 669 | + goto domeinbuffbigerr; | |
| 670 | + | |
| 671 | + } | |
| 672 | + | |
| 673 | + | |
| 674 | + WideToMB(CP_THREAD_ACP,key,mb_key,ARRAY_LENGTH(mb_key)); | |
| 675 | + WideToMB(CP_THREAD_ACP,domein,mb_domein,ARRAY_LENGTH(mb_domein)); | |
| 676 | + strstr(mb_domein,".jp")[0] = '\0'; | |
| 677 | + | |
| 678 | + for(;targetString < targetEndPointer;targetString += strlen(targetString) + 1){ | |
| 679 | + | |
| 680 | + | |
| 681 | + if(strncmp(targetString + 1,mb_domein,strlen(mb_domein)) == 0){ | |
| 682 | + | |
| 683 | + | |
| 684 | + | |
| 685 | + | |
| 686 | + | |
| 687 | + for(keyPointer = (targetString + strlen(targetString) + 1);keyPointer < targetEndPointer;keyPointer = (keyPointer + strlen(keyPointer) + 1)){ | |
| 688 | + if(strstr(keyPointer,mb_key) !=NULL){ | |
| 689 | + CHAR cookie_mbBuff[_MAX_PATH]; | |
| 690 | + UINT_PTR length; | |
| 691 | + cookiePointer = keyPointer+ strlen(keyPointer) + 1; | |
| 692 | + length = strlen(cookiePointer) -2; | |
| 693 | + strncpy(cookie_mbBuff,cookiePointer+1,length); | |
| 694 | + cookie_mbBuff[length] = '\0'; | |
| 695 | + if(((INT_PTR)bufSize) < GetLenToWide(CP_THREAD_ACP,cookie_mbBuff) + wcslen(key) + 1){ | |
| 696 | + | |
| 697 | + goto cookiebuffbigerr; | |
| 698 | + } | |
| 699 | + wcscpy(cookies,key); | |
| 700 | + cookies += wcslen(cookies); | |
| 701 | + cookies[0] = L'='; | |
| 702 | + cookies++; | |
| 703 | + | |
| 704 | + MBToWide(CP_THREAD_ACP,cookie_mbBuff,cookies,bufSize); | |
| 705 | + result = COOKIE_ERR_OK; | |
| 706 | + goto end; | |
| 707 | + } | |
| 708 | + } | |
| 709 | + | |
| 710 | + } | |
| 711 | + | |
| 712 | + } | |
| 713 | + | |
| 714 | +end: | |
| 715 | + | |
| 716 | + | |
| 717 | + return result; | |
| 718 | + | |
| 652 | 719 | |
| 653 | - return COOKIE_ERR_DETAIL_NOTFOUND; | |
| 720 | +keybuffbigerr: | |
| 721 | + result = COOKIE_ERR_DETAIL_URL_TOOBIG; | |
| 722 | + goto end; | |
| 723 | + | |
| 724 | +domeinbuffbigerr: | |
| 725 | + result = COOKIE_ERR_DETAIL_DOMEIN_TOOBIG; | |
| 726 | + goto end; | |
| 727 | + | |
| 728 | +cookiebuffbigerr: | |
| 729 | + result = COOKIEERR_DETAIL_RESULT_TOOBIG; | |
| 730 | + goto end; | |
| 654 | 731 | } |
| 655 | 732 | |
| 656 | 733 | /// |
| @@ -664,7 +741,7 @@ static INLINE COOKIE_RESULT GetCookieSafari(LPCSTR targetString,LPCSTR targetEnd | ||
| 664 | 741 | LPCSTR domeinPointer; |
| 665 | 742 | SIZE_T mb_keyLen; |
| 666 | 743 | |
| 667 | - if(ARRAY_LENGTH(mb_key) < GetLenToMB(CP_THREAD_ACP,key) - 1){ | |
| 744 | + if(ARRAY_LENGTH(mb_key)-1 < GetLenToMB(CP_THREAD_ACP,key)){ | |
| 668 | 745 | |
| 669 | 746 | goto keybuffbigerr; |
| 670 | 747 |
| @@ -698,6 +775,7 @@ static INLINE COOKIE_RESULT GetCookieSafari(LPCSTR targetString,LPCSTR targetEnd | ||
| 698 | 775 | |
| 699 | 776 | MBToWide(CP_THREAD_ACP,cookiePointer,cookies,bufSize); |
| 700 | 777 | result = COOKIE_ERR_OK; |
| 778 | + break; | |
| 701 | 779 | } |
| 702 | 780 | } |
| 703 | 781 |