Eric van Beurden : wininet: Rearrange invalid header checks.

Alexandre Julliard julliard at winehq.org
Fri Jun 5 08:56:53 CDT 2009


Module: wine
Branch: master
Commit: 59a217847cb6a173653f7923ba0aa711354b96a2
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=59a217847cb6a173653f7923ba0aa711354b96a2

Author: Eric van Beurden <ericvb at transgaming.com>
Date:   Thu Jun  4 10:52:59 2009 -0400

wininet: Rearrange invalid header checks.

---

 dlls/wininet/http.c |   43 +++++++++++++++++++------------------------
 1 files changed, 19 insertions(+), 24 deletions(-)

diff --git a/dlls/wininet/http.c b/dlls/wininet/http.c
index c6873ae..1bba8d9 100644
--- a/dlls/wininet/http.c
+++ b/dlls/wininet/http.c
@@ -4235,33 +4235,28 @@ static INT HTTP_GetResponseHeaders(LPWININETHTTPREQW lpwhr, BOOL clear)
             TRACE("got line %s, now interpreting\n", debugstr_a(bufferA));
 
             if (!bufferA[0]) break;
-            if (!strchr(bufferA, ':'))
-            {
-                WARN("invalid header\n");
-                continue;
-            }
             MultiByteToWideChar( CP_ACP, 0, bufferA, buflen, buffer, MAX_REPLY_LEN );
 
-            while (cchRawHeaders + buflen + strlenW(szCrLf) > cchMaxRawHeaders)
-                cchMaxRawHeaders *= 2;
-            temp = HeapReAlloc(GetProcessHeap(), 0, lpszRawHeaders, (cchMaxRawHeaders+1)*sizeof(WCHAR));
-            if (temp == NULL) goto lend;
-            lpszRawHeaders = temp;
-            memcpy(lpszRawHeaders+cchRawHeaders, buffer, (buflen-1)*sizeof(WCHAR));
-            cchRawHeaders += (buflen-1);
-            memcpy(lpszRawHeaders+cchRawHeaders, szCrLf, sizeof(szCrLf));
-            cchRawHeaders += sizeof(szCrLf)/sizeof(szCrLf[0])-1;
-            lpszRawHeaders[cchRawHeaders] = '\0';
-
             pFieldAndValue = HTTP_InterpretHttpHeader(buffer);
-            if (!pFieldAndValue)
-                break;
-
-            HTTP_ProcessHeader(lpwhr, pFieldAndValue[0], pFieldAndValue[1], 
-                HTTP_ADDREQ_FLAG_ADD );
-
-            HTTP_FreeTokens(pFieldAndValue);
-	}
+            if (pFieldAndValue)
+            {
+                while (cchRawHeaders + buflen + strlenW(szCrLf) > cchMaxRawHeaders)
+                    cchMaxRawHeaders *= 2;
+                temp = HeapReAlloc(GetProcessHeap(), 0, lpszRawHeaders, (cchMaxRawHeaders+1)*sizeof(WCHAR));
+                if (temp == NULL) goto lend;
+                lpszRawHeaders = temp;
+                memcpy(lpszRawHeaders+cchRawHeaders, buffer, (buflen-1)*sizeof(WCHAR));
+                cchRawHeaders += (buflen-1);
+                memcpy(lpszRawHeaders+cchRawHeaders, szCrLf, sizeof(szCrLf));
+                cchRawHeaders += sizeof(szCrLf)/sizeof(szCrLf[0])-1;
+                lpszRawHeaders[cchRawHeaders] = '\0';
+
+                HTTP_ProcessHeader(lpwhr, pFieldAndValue[0], pFieldAndValue[1],
+                                   HTTP_ADDREQ_FLAG_ADD );
+
+                HTTP_FreeTokens(pFieldAndValue);
+            }
+        }
 	else
 	{
 	    cbreaks++;




More information about the wine-cvs mailing list