Jacek Caban : wininet: Ignore missing status text in response headers.

Alexandre Julliard julliard at winehq.org
Fri Jul 19 13:19:41 CDT 2013


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Fri Jul 19 12:02:18 2013 +0200

wininet: Ignore missing status text in response headers.

---

 dlls/wininet/http.c       |   14 +++++++++-----
 dlls/wininet/tests/http.c |   14 ++++++++++++++
 2 files changed, 23 insertions(+), 5 deletions(-)

diff --git a/dlls/wininet/http.c b/dlls/wininet/http.c
index a0e4973..03fbf10 100644
--- a/dlls/wininet/http.c
+++ b/dlls/wininet/http.c
@@ -141,6 +141,8 @@ static const WCHAR szVia[] = { 'V','i','a',0 };
 static const WCHAR szWarning[] = { 'W','a','r','n','i','n','g',0 };
 static const WCHAR szWWW_Authenticate[] = { 'W','W','W','-','A','u','t','h','e','n','t','i','c','a','t','e',0 };
 
+static const WCHAR emptyW[] = {0};
+
 #define HTTP_REFERER    szReferer
 #define HTTP_ACCEPT     szAccept
 #define HTTP_USERAGENT  szUser_Agent
@@ -3874,6 +3876,8 @@ BOOL WINAPI HttpQueryInfoA(HINTERNET hHttpRequest, DWORD dwInfoLevel,
     DWORD len;
     WCHAR* bufferW;
 
+    TRACE("%p %x\n", hHttpRequest, dwInfoLevel);
+
     if((dwInfoLevel & HTTP_QUERY_FLAG_NUMBER) ||
        (dwInfoLevel & HTTP_QUERY_FLAG_SYSTEMTIME))
     {
@@ -5857,9 +5861,8 @@ static DWORD HTTP_GetResponseHeaders(http_request_t *request, INT *len)
 
             /* split the status code from the status text */
             status_text = strchrW( status_code, ' ' );
-            if( !status_text )
-                goto lend;
-            *status_text++=0;
+            if( status_text )
+                *status_text++=0;
 
             request->status_code = atoiW(status_code);
 
@@ -5891,11 +5894,12 @@ static DWORD HTTP_GetResponseHeaders(http_request_t *request, INT *len)
     heap_free(request->statusText);
 
     request->version = heap_strdupW(buffer);
-    request->statusText = heap_strdupW(status_text);
+    request->statusText = heap_strdupW(status_text ? status_text : emptyW);
 
     /* Restore the spaces */
     *(status_code-1) = ' ';
-    *(status_text-1) = ' ';
+    if (status_text)
+        *(status_text-1) = ' ';
 
     /* Parse each response line */
     do
diff --git a/dlls/wininet/tests/http.c b/dlls/wininet/tests/http.c
index c3dd7dd..6022955 100644
--- a/dlls/wininet/tests/http.c
+++ b/dlls/wininet/tests/http.c
@@ -3590,6 +3590,20 @@ static const http_status_test_t http_status_tests[] = {
         "\r\nx",
         404,
         "Fail"
+    },
+    {
+        "HTTP/1.1 200\r\n"
+        "Content-Length: 1\r\n"
+        "\r\nx",
+        200,
+        ""
+    },
+    {
+        "HTTP/1.1 410 \r\n"
+        "Content-Length: 1\r\n"
+        "\r\nx",
+        410,
+        ""
     }
 };
 




More information about the wine-cvs mailing list