HTTP header values should be treated as latin1, not UTF-8
authorCarlos Garcia Campos <carlosgc@webkit.org>
Fri, 6 Mar 2015 07:33:11 +0000 (07:33 +0000)
committerAlberto Garcia <berto@igalia.com>
Fri, 6 Mar 2015 07:33:11 +0000 (07:33 +0000)
===================================================================

Gbp-Pq: Name http-latin1.patch

Source/WebCore/platform/network/soup/ResourceRequestSoup.cpp
Source/WebCore/platform/network/soup/ResourceResponseSoup.cpp

index 546e94c0750d3a10ddb2066adf91f45d24e4584e..19ee382c0a0217ed4424c89122c3ba47941caec6 100644 (file)
@@ -65,12 +65,12 @@ void ResourceRequest::updateFromSoupMessageHeaders(SoupMessageHeaders* soupHeade
     const char* headerName;
     const char* headerValue;
     while (soup_message_headers_iter_next(&headersIter, &headerName, &headerValue))
-        m_httpHeaderFields.set(String::fromUTF8(headerName), String::fromUTF8(headerValue));
+        m_httpHeaderFields.set(String(headerName), String(headerValue));
 }
 
 void ResourceRequest::updateSoupMessage(SoupMessage* soupMessage) const
 {
-    g_object_set(soupMessage, SOUP_MESSAGE_METHOD, httpMethod().utf8().data(), NULL);
+    g_object_set(soupMessage, SOUP_MESSAGE_METHOD, httpMethod().ascii().data(), NULL);
 
     GUniquePtr<SoupURI> uri = createSoupURI();
     soup_message_set_uri(soupMessage, uri.get());
@@ -80,7 +80,7 @@ void ResourceRequest::updateSoupMessage(SoupMessage* soupMessage) const
 
 SoupMessage* ResourceRequest::toSoupMessage() const
 {
-    SoupMessage* soupMessage = soup_message_new(httpMethod().utf8().data(), url().string().utf8().data());
+    SoupMessage* soupMessage = soup_message_new(httpMethod().ascii().data(), url().string().utf8().data());
     if (!soupMessage)
         return 0;
 
@@ -102,7 +102,7 @@ void ResourceRequest::updateFromSoupMessage(SoupMessage* soupMessage)
     if (shouldPortBeResetToZero)
         m_url.setPort(0);
 
-    m_httpMethod = String::fromUTF8(soupMessage->method);
+    m_httpMethod = String(soupMessage->method);
 
     updateFromSoupMessageHeaders(soupMessage->request_headers);
 
index 14d46b6a4166dcd10d929f906353ed98c8db575e..6f13fc56bb802dc5297a8eddf2986576bcf7ef11 100644 (file)
@@ -87,7 +87,7 @@ void ResourceResponse::updateFromSoupMessageHeaders(const SoupMessageHeaders* me
 
     soup_message_headers_iter_init(&headersIter, headers);
     while (soup_message_headers_iter_next(&headersIter, &headerName, &headerValue))
-        addHTTPHeaderField(String::fromUTF8WithLatin1Fallback(headerName, strlen(headerName)), String::fromUTF8WithLatin1Fallback(headerValue, strlen(headerValue)));
+        addHTTPHeaderField(String(headerName), String(headerValue));
 
     String contentType;
     const char* officialType = soup_message_headers_get_one(headers, "Content-Type");
@@ -108,7 +108,8 @@ CertificateInfo ResourceResponse::platformCertificateInfo() const
 
 String ResourceResponse::platformSuggestedFilename() const
 {
-    return filenameFromHTTPContentDisposition(httpHeaderField(HTTPHeaderName::ContentDisposition));
+    String contentDisposition(httpHeaderField(HTTPHeaderName::ContentDisposition));
+    return filenameFromHTTPContentDisposition(String::fromUTF8WithLatin1Fallback(contentDisposition.characters8(), contentDisposition.length()));
 }
 
 }