mirror of
git://source.winehq.org/git/wine.git
synced 2024-10-31 10:41:12 +00:00
HttpQueryInfo returns buffer length including null terminator on
insufficient buffer length and buffer length excluding null terminator on success: - Fix HTTP_HttpQueryInfoW for these semantics. - Fix HttpQueryInfoA to correctly copy the null terminator in the call to WideCharToMultiByte.
This commit is contained in:
parent
8f6545cbcf
commit
4385d305e1
1 changed files with 10 additions and 5 deletions
|
@ -862,7 +862,10 @@ BOOL WINAPI HTTP_HttpQueryInfoW( LPWININETHTTPREQW lpwhr, DWORD dwInfoLevel,
|
|||
return FALSE;
|
||||
}
|
||||
memcpy(lpBuffer, lpwhr->lpszRawHeaders, (len+1)*sizeof(WCHAR));
|
||||
*lpdwBufferLength = (len + 1) * sizeof(WCHAR);
|
||||
*lpdwBufferLength = len * sizeof(WCHAR);
|
||||
|
||||
TRACE("returning data: %s\n", debugstr_wn((WCHAR*)lpBuffer, len));
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
else if (index == HTTP_QUERY_RAW_HEADERS)
|
||||
|
@ -894,7 +897,7 @@ BOOL WINAPI HTTP_HttpQueryInfoW( LPWININETHTTPREQW lpwhr, DWORD dwInfoLevel,
|
|||
|
||||
TRACE("returning data: %s\n", debugstr_wn((WCHAR*)lpBuffer, size));
|
||||
|
||||
*lpdwBufferLength = (size + 1) * sizeof(WCHAR);
|
||||
*lpdwBufferLength = size * sizeof(WCHAR);
|
||||
HTTP_FreeTokens(ppszRawHeaderLines);
|
||||
|
||||
return TRUE;
|
||||
|
@ -1160,16 +1163,18 @@ BOOL WINAPI HttpQueryInfoA(HINTERNET hHttpRequest, DWORD dwInfoLevel,
|
|||
&len, lpdwIndex );
|
||||
if( result )
|
||||
{
|
||||
len = WideCharToMultiByte( CP_ACP,0, bufferW, len / sizeof(WCHAR),
|
||||
len = WideCharToMultiByte( CP_ACP,0, bufferW, len / sizeof(WCHAR) + 1,
|
||||
lpBuffer, *lpdwBufferLength, NULL, NULL );
|
||||
*lpdwBufferLength = len * sizeof(WCHAR);
|
||||
*lpdwBufferLength = len - 1;
|
||||
|
||||
TRACE("lpBuffer: %s\n", debugstr_a(lpBuffer));
|
||||
}
|
||||
else
|
||||
/* since the strings being returned from HttpQueryInfoW should be
|
||||
* only ASCII characters, it is reasonable to assume that all of
|
||||
* the Unicode characters can be reduced to a single byte */
|
||||
*lpdwBufferLength = len / sizeof(WCHAR);
|
||||
|
||||
|
||||
HeapFree(GetProcessHeap(), 0, bufferW );
|
||||
|
||||
return result;
|
||||
|
|
Loading…
Reference in a new issue