mirror of
https://github.com/reactos/wine.git
synced 2025-02-07 20:57:39 +00:00
wininet: Always make copies of strings passed to INTERNET_SendCallback.
This ensures that applications that change the strings received in status callbacks don't affect the data needed to successfully connect to the correct server.
This commit is contained in:
parent
d72f741a33
commit
07daeff8f4
@ -56,21 +56,25 @@ static VOID WINAPI callback(
|
||||
trace("%04x:Callback %p 0x%lx INTERNET_STATUS_RESOLVING_NAME \"%s\" %d\n",
|
||||
GetCurrentThreadId(), hInternet, dwContext,
|
||||
(LPCSTR)lpvStatusInformation,dwStatusInformationLength);
|
||||
*(LPSTR)lpvStatusInformation = '\0';
|
||||
break;
|
||||
case INTERNET_STATUS_NAME_RESOLVED:
|
||||
trace("%04x:Callback %p 0x%lx INTERNET_STATUS_NAME_RESOLVED \"%s\" %d\n",
|
||||
GetCurrentThreadId(), hInternet, dwContext,
|
||||
(LPCSTR)lpvStatusInformation,dwStatusInformationLength);
|
||||
*(LPSTR)lpvStatusInformation = '\0';
|
||||
break;
|
||||
case INTERNET_STATUS_CONNECTING_TO_SERVER:
|
||||
trace("%04x:Callback %p 0x%lx INTERNET_STATUS_CONNECTING_TO_SERVER \"%s\" %d\n",
|
||||
GetCurrentThreadId(), hInternet, dwContext,
|
||||
(LPCSTR)lpvStatusInformation,dwStatusInformationLength);
|
||||
*(LPSTR)lpvStatusInformation = '\0';
|
||||
break;
|
||||
case INTERNET_STATUS_CONNECTED_TO_SERVER:
|
||||
trace("%04x:Callback %p 0x%lx INTERNET_STATUS_CONNECTED_TO_SERVER \"%s\" %d\n",
|
||||
GetCurrentThreadId(), hInternet, dwContext,
|
||||
(LPCSTR)lpvStatusInformation,dwStatusInformationLength);
|
||||
*(LPSTR)lpvStatusInformation = '\0';
|
||||
break;
|
||||
case INTERNET_STATUS_SENDING_REQUEST:
|
||||
trace("%04x:Callback %p 0x%lx INTERNET_STATUS_SENDING_REQUEST %p %d\n",
|
||||
@ -150,6 +154,7 @@ static VOID WINAPI callback(
|
||||
trace("%04x:Callback %p 0x%lx INTERNET_STATUS_REDIRECT \"%s\" %d\n",
|
||||
GetCurrentThreadId(), hInternet, dwContext,
|
||||
(LPCSTR)lpvStatusInformation, dwStatusInformationLength);
|
||||
*(LPSTR)lpvStatusInformation = '\0';
|
||||
break;
|
||||
case INTERNET_STATUS_INTERMEDIATE_RESPONSE:
|
||||
trace("%04x:Callback %p 0x%lx INTERNET_STATUS_INTERMEDIATE_RESPONSE %p %d\n",
|
||||
|
@ -231,13 +231,25 @@ VOID INTERNET_SendCallback(LPWININETHANDLEHEADER hdr, DWORD dwContext,
|
||||
case INTERNET_STATUS_CONNECTING_TO_SERVER:
|
||||
case INTERNET_STATUS_CONNECTED_TO_SERVER:
|
||||
lpvNewInfo = WININET_strdup_AtoW(lpvStatusInfo);
|
||||
break;
|
||||
case INTERNET_STATUS_RESOLVING_NAME:
|
||||
case INTERNET_STATUS_REDIRECT:
|
||||
lpvNewInfo = WININET_strdupW(lpvStatusInfo);
|
||||
break;
|
||||
}
|
||||
}else {
|
||||
switch(dwInternetStatus)
|
||||
{
|
||||
case INTERNET_STATUS_NAME_RESOLVED:
|
||||
case INTERNET_STATUS_CONNECTING_TO_SERVER:
|
||||
case INTERNET_STATUS_CONNECTED_TO_SERVER:
|
||||
lpvNewInfo = HeapAlloc(GetProcessHeap(), 0, strlen(lpvStatusInfo) + 1);
|
||||
if (lpvNewInfo) strcpy(lpvNewInfo, lpvStatusInfo);
|
||||
break;
|
||||
case INTERNET_STATUS_RESOLVING_NAME:
|
||||
case INTERNET_STATUS_REDIRECT:
|
||||
lpvNewInfo = WININET_strdup_WtoA(lpvStatusInfo);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user