Title: [151346] trunk/Source/WebCore
Revision
151346
Author
[email protected]
Date
2013-06-08 04:34:25 -0700 (Sat, 08 Jun 2013)

Log Message

[curl] Handling of blob elements is incorrect
https://bugs.webkit.org/show_bug.cgi?id=117301

Patch by Peter Gal <[email protected]> on 2013-06-08
Reviewed by Kenneth Rohde Christiansen.

No new tests, covered by existing ones:
http/tests/fileapi/xhr-send-form-data-filename-escaping.html
http/tests/fileapi/xhr-send-form-data-mimetype-normalization.html

* platform/network/curl/ResourceHandleManager.cpp:
(WebCore::getFormElementsCount): Resolve Blob elements.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (151345 => 151346)


--- trunk/Source/WebCore/ChangeLog	2013-06-08 02:11:54 UTC (rev 151345)
+++ trunk/Source/WebCore/ChangeLog	2013-06-08 11:34:25 UTC (rev 151346)
@@ -1,3 +1,17 @@
+2013-06-08  Peter Gal  <[email protected]>
+
+        [curl] Handling of blob elements is incorrect
+        https://bugs.webkit.org/show_bug.cgi?id=117301
+
+        Reviewed by Kenneth Rohde Christiansen.
+
+        No new tests, covered by existing ones:
+        http/tests/fileapi/xhr-send-form-data-filename-escaping.html
+        http/tests/fileapi/xhr-send-form-data-mimetype-normalization.html
+
+        * platform/network/curl/ResourceHandleManager.cpp:
+        (WebCore::getFormElementsCount): Resolve Blob elements.
+
 2013-06-07  Alexandru Chiculita  <[email protected]>
 
         [CSS Regions] Layers inside the RenderFlowThread should be collected by the layer of RenderView

Modified: trunk/Source/WebCore/platform/network/curl/ResourceHandleManager.cpp (151345 => 151346)


--- trunk/Source/WebCore/platform/network/curl/ResourceHandleManager.cpp	2013-06-08 02:11:54 UTC (rev 151345)
+++ trunk/Source/WebCore/platform/network/curl/ResourceHandleManager.cpp	2013-06-08 11:34:25 UTC (rev 151346)
@@ -482,11 +482,18 @@
 
 static inline size_t getFormElementsCount(ResourceHandle* job)
 {
-    if (!job->firstRequest().httpBody())
+    RefPtr<FormData> formData = job->firstRequest().httpBody();
+
+    if (!formData)
         return 0;
 
-    Vector<FormDataElement> elements = job->firstRequest().httpBody()->elements();
-    return elements.size();
+#if ENABLE(BLOB)
+    // Resolve the blob elements so the formData can correctly report it's size.
+    formData = formData->resolveBlobReferences();
+    job->firstRequest().setHTTPBody(formData);
+#endif
+
+    return formData->elements().size();
 }
 
 static void setupFormData(ResourceHandle* job, CURLoption sizeOption, struct curl_slist** headers)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to