<div dir="ltr">You need this fix right in your third-party project that it cannot wait until the next upstream bugfix release, or if not you, someone else requested it on the Yocto bugtracker?</div><div class="gmail_extra">
<br><br><div class="gmail_quote">On Sat, Aug 3, 2013 at 8:56 AM, Jonathan Liu <span dir="ltr"><<a href="mailto:net147@gmail.com" target="_blank">net147@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Signed-off-by: Jonathan Liu <<a href="mailto:net147@gmail.com">net147@gmail.com</a>><br>
---<br>
meta/recipes-qt/qt4/qt4-4.8.5.inc | 1 +<br>
...art-fix-data-corruption-in-readData-metho.patch | 43 ++++++++++++++++++++++<br>
2 files changed, 44 insertions(+)<br>
create mode 100644 meta/recipes-qt/qt4/qt4-4.8.5/0023-QHttpMultiPart-fix-data-corruption-in-readData-metho.patch<br>
<br>
diff --git a/meta/recipes-qt/qt4/qt4-4.8.5.inc b/meta/recipes-qt/qt4/qt4-4.8.5.inc<br>
index d05b174..95a14f3 100644<br>
--- a/meta/recipes-qt/qt4/qt4-4.8.5.inc<br>
+++ b/meta/recipes-qt/qt4/qt4-4.8.5.inc<br>
@@ -22,6 +22,7 @@ SRC_URI = "<a href="http://download.qt-project.org/official_releases/qt/4.8/${PV}/qt-ever" target="_blank">http://download.qt-project.org/official_releases/qt/4.8/${PV}/qt-ever</a><br>
file://0019-Fixes-for-gcc-4.7.0-particularly-on-qemux86.patch \<br>
file://0020-webkit-disable-the-fuse-ld-gold-flag.patch \<br>
file://0022-Fix-drawing-of-0-width-polylines-from-outside-the-de.patch \<br>
+ file://0023-QHttpMultiPart-fix-data-corruption-in-readData-metho.patch \<br>
file://0027-tools.pro-disable-qmeegographicssystemhelper.patch \<br>
file://g++.conf \<br>
file://linux.conf \<br>
diff --git a/meta/recipes-qt/qt4/qt4-4.8.5/0023-QHttpMultiPart-fix-data-corruption-in-readData-metho.patch b/meta/recipes-qt/qt4/qt4-4.8.5/0023-QHttpMultiPart-fix-data-corruption-in-readData-metho.patch<br>
new file mode 100644<br>
index 0000000..c3c002e<br>
--- /dev/null<br>
+++ b/meta/recipes-qt/qt4/qt4-4.8.5/0023-QHttpMultiPart-fix-data-corruption-in-readData-metho.patch<br>
@@ -0,0 +1,43 @@<br>
+From 1f40ed553e618c3b0511c7db4b4fd26c2d2b65bf Mon Sep 17 00:00:00 2001<br>
+From: Peter Hartmann <<a href="mailto:phartmann@blackberry.com">phartmann@blackberry.com</a>><br>
+Date: Thu, 25 Jul 2013 12:05:29 -0400<br>
+Subject: [PATCH] QHttpMultiPart: fix data corruption in readData method<br>
+<br>
+When readData() is called repeatedly, we need to keep track which<br>
+part of the multipart message we are currently reading from.<br>
+Hereby we also need to take the boundary size into account, and not<br>
+only the size of the multipart; otherwise we would skip a not<br>
+completely read part. This would then later lead to advancing the<br>
+read pointer by negative indexes and data loss.<br>
+<br>
+Upstream-Status: Accepted [<a href="https://codereview.qt-project.org/#change,61861" target="_blank">https://codereview.qt-project.org/#change,61861</a>]<br>
+Signed-off-by: Jonathan Liu <<a href="mailto:net147@gmail.com">net147@gmail.com</a>><br>
+<br>
+Task-number: QTBUG-32534<br>
+Change-Id: Ibb6dff16adaf4ea67181d23d1d0c8459e33a0ed0<br>
+Reviewed-by: Jonathan Liu <<a href="mailto:net147@gmail.com">net147@gmail.com</a>><br>
+Reviewed-by: Shane Kearns <<a href="mailto:shane.kearns@accenture.com">shane.kearns@accenture.com</a>><br>
+(cherry picked from qtbase/af96c6fed931564c95037539f07e9c8e33c69529)<br>
+Reviewed-by: Thiago Macieira <<a href="mailto:thiago.macieira@intel.com">thiago.macieira@intel.com</a>><br>
+---<br>
+ src/network/access/qhttpmultipart.cpp | 3 +-<br>
+ tests/auto/qnetworkreply/tst_qnetworkreply.cpp | 44 ++++++++++++++++++++++++++<br>
+ 2 files changed, 46 insertions(+), 1 deletion(-)<br>
+<br>
+diff --git a/src/network/access/qhttpmultipart.cpp b/src/network/access/qhttpmultipart.cpp<br>
+index 635129a..b25e917 100644<br>
+--- a/src/network/access/qhttpmultipart.cpp<br>
++++ b/src/network/access/qhttpmultipart.cpp<br>
+@@ -488,7 +488,8 @@ qint64 QHttpMultiPartIODevice::readData(char *data, qint64 maxSize)<br>
+<br>
+ // skip the parts we have already read<br>
+ while (index < multiPart->parts.count() &&<br>
+- readPointer >= partOffsets.at(index) + multiPart-><a href="http://parts.at" target="_blank">parts.at</a>(index).d->size())<br>
++ readPointer >= partOffsets.at(index) + multiPart-><a href="http://parts.at" target="_blank">parts.at</a>(index).d->size()<br>
++ + multiPart->boundary.count() + 6) // 6 == 2 boundary dashes, \r\n after boundary, \r\n after multipart<br>
+ index++;<br>
+<br>
+ // read the data<br>
+--<br>
+1.8.3.4<br>
+<br>
<span class="HOEnZb"><font color="#888888">--<br>
1.8.3.4<br>
<br>
_______________________________________________<br>
Openembedded-core mailing list<br>
<a href="mailto:Openembedded-core@lists.openembedded.org">Openembedded-core@lists.openembedded.org</a><br>
<a href="http://lists.openembedded.org/mailman/listinfo/openembedded-core" target="_blank">http://lists.openembedded.org/mailman/listinfo/openembedded-core</a><br>
</font></span></blockquote></div><br></div>