msxml3: Fix status text value parsing.

oldstable
Nikolay Sivov 2012-06-10 00:48:09 +04:00 committed by Alexandre Julliard
parent c2c8b9e771
commit ad914986e8
1 changed files with 18 additions and 17 deletions

View File

@ -540,31 +540,32 @@ static HRESULT WINAPI BSCHttpNegotiate_OnResponse(IHttpNegotiate *iface, DWORD c
This->request->status_text = NULL; This->request->status_text = NULL;
if (resp_headers) if (resp_headers)
{ {
const WCHAR *ptr, *line; const WCHAR *ptr, *line, *status_text;
ptr = line = resp_headers; ptr = line = resp_headers;
/* skip status line */ /* skip HTTP-Version */
while (*ptr) ptr = strchrW(ptr, ' ');
if (ptr)
{ {
if (*ptr == '\r' && *(ptr+1) == '\n') /* skip Status-Code */
ptr = strchrW(++ptr, ' ');
if (ptr)
{ {
const WCHAR *end = ptr-1; status_text = ++ptr;
line = ptr + 2; /* now it supposed to end with CRLF */
/* scan back to get status phrase */ while (*ptr)
while (ptr > resp_headers)
{ {
if (*ptr == ' ') if (*ptr == '\r' && *(ptr+1) == '\n')
{ {
This->request->status_text = SysAllocStringLen(ptr+1, end-ptr); line = ptr + 2;
TRACE("status text %s\n", debugstr_w(This->request->status_text)); This->request->status_text = SysAllocStringLen(status_text, ptr-status_text);
break; TRACE("status text %s\n", debugstr_w(This->request->status_text));
} break;
ptr--; }
ptr++;
} }
break;
} }
ptr++;
} }
/* store as unparsed string for now */ /* store as unparsed string for now */