<pre style='margin:0'>
Renee Otten (reneeotten) pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/a730d9b40b524b74da41c6c69aaaf57822b0bc9f">https://github.com/macports/macports-ports/commit/a730d9b40b524b74da41c6c69aaaf57822b0bc9f</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit a730d9b40b524b74da41c6c69aaaf57822b0bc9f
</span>Author: Renee Otten <reneeotten@macports.org>
AuthorDate: Sun Aug 25 21:53:59 2024 -0400
<span style='display:block; white-space:pre;color:#404040;'> qt5: update to 5.15.15
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> Closes: https://trac.macports.org/ticket/64518
</span>---
aqua/qt5/Portfile | 241 +++++++++++--------------
aqua/qt5/files/CVE-2023-32573-qtsvg-5.15.diff | 34 ----
aqua/qt5/files/CVE-2023-32762-qtbase-5.15.diff | 13 --
aqua/qt5/files/CVE-2023-32763-qtbase-5.15.diff | 47 -----
aqua/qt5/files/CVE-2023-33285-qtbase-5.15.diff | 70 -------
aqua/qt5/files/CVE-2023-37369-qtbase-5.15.diff | 203 ---------------------
aqua/qt5/files/CVE-2023-38197-qtbase-5.15.diff | 219 ----------------------
aqua/qt5/files/CVE-2023-51714-qtbase-5.15.diff | 99 ----------
aqua/qt5/files/CVE-2024-25580-qtbase-5.15.diff | 197 --------------------
aqua/qt5/files/mysql-plugin-qtbug-109832.patch | 36 ----
10 files changed, 110 insertions(+), 1049 deletions(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt5/Portfile b/aqua/qt5/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 15e443d25c0..1d3c0730f76 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/aqua/qt5/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/aqua/qt5/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -14,7 +14,7 @@ license {LGPL-3 GPL-3 OpenSSLException}
</span> homepage https://www.qt.io
# When updating, also update py-pyside2
<span style='display:block; white-space:pre;background:#ffe0e0;'>-set qt_version 5.15.12
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set qt_version 5.15.15
</span> version ${qt_version}
set middle_name everywhere-opensource
set worksrcdir_middle_name everywhere
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -189,9 +189,9 @@ set llvm_version 17
</span> array set modules {
qt3d {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- 2c83ae296e3427bdbfcf571905d5bbb97f8a0abe
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- d058c53e72dd7caa92e6c1a4a2ed301aee55a9bd92828136752f0a1299fe694b
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 118298584
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ d1e37ba6de35f817bb35afc5c5430a38aae04417 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 5a400db06eb676dab23f9d4d25805bf051e38380b9b37ade3340cc2c3130db73 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 118255492
</span> }
""
"port:assimp"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -204,9 +204,9 @@ array set modules {
</span> }
qtbase {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- 674d1a2fd0748110832ac6037fea792c6f7dfd61
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 4c01b7b0f1f3c1e05ae6bf53c66e49c65c6b3872475bac26b0fb228136914af0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 50840192
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 7ff4cbd9d13c17acfe2afa02306a450112e07e71 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ e5f941fecf694ecba97c550b45b0634e552166cc6c815bcfdc481edd62796ba1 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 51366204
</span> }
""
"port:zlib port:libpng path:include/turbojpeg.h:libjpeg-turbo port:freetype path:bin/dbus-daemon:dbus path:lib/pkgconfig/glib-2.0.pc:glib2 path:lib/pkgconfig/icu-uc.pc:icu port:pcre2 path:lib/pkgconfig/harfbuzz.pc:harfbuzz port:double-conversion port:zstd"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -214,14 +214,14 @@ array set modules {
</span> {"Qt Core" "Qt GUI" "Qt Network" "Qt SQL" "Qt Test" "Qt Widgets" "Qt Concurrent" "Qt D-Bus" "Qt OpenGL" "Qt Platform Headers" "Qt Print Support" "Qt XML"}
""
"variant overrides: "
<span style='display:block; white-space:pre;background:#ffe0e0;'>- "revision 1"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "revision 0"
</span> "License: "
}
qtcharts {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- 1d97f2eae0b7e51a53ac375e5d875fe2e2e76ede
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 97ad0afca7eab9440d3a6908f5499b29a78401a04503c4f9fc4fa87287dda8e2
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 4254676
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 7acff484e6181757993edace2ebbe74ea0c7f262 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 71276bb80db9140810cce1213edbc227a833e29390f8cb8d903d1c9e5ece0a45 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 4246388
</span> }
""
""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -234,9 +234,9 @@ array set modules {
</span> }
qtconnectivity {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- 403877bfc62aed148ac99e6aeafda138706e6821
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- cfaed2d7a0520491cf1ef95de689b25cbb0304b22fefab4e95307647ea6d48b4
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 2829264
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ d3669dec8fdd051382fffd6a74fbcfee720eaea9 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 6d014421596ecf53c341b30d256c5c65108787dcce3def41e86acb7344f615b0 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 2820640
</span> }
""
""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -249,9 +249,9 @@ array set modules {
</span> }
qtdatavis3d {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- a0540fb2684e58cdebb2322ce6e10ee8297c43d3
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 0d8bfd1bd973c50adf62dd96a070dc7089b9466ddb2c7385c3bfbbf88a71efcb
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 5193584
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ b5f202d848082dbc55168ed71daf6009ee573b8f \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ c045ec186f418ab83e28fb13f89081f213058fc2f09aaaf9e39561d8d41a9c88 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 5184772
</span> }
""
""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -264,9 +264,9 @@ array set modules {
</span> }
qtdeclarative {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- 959076cce268de06d9f38e0b231562e2fe56fdab
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 03b920dfba5ad8b741d7610ad2e37336b4d669c6613fca64426244b7e7f9df9e
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 21602960
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 9af037e35c3ed1470a3a6bd4514981e730c2694a \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ff5fed427aca97d24c2bb94c1ed492b16e6d5920e92a7e38ffa79c426604ac1a \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 21596972
</span> }
"port:python311"
""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -279,9 +279,9 @@ array set modules {
</span> }
qtdoc {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- 82ed62dd4ca72dea4b3327037d6387823eb551dd
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- f0bd34f8d92f807a50118d353e1c8e6ce987a70c8a33bb7233723a3f2bb5cc44
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 5751304
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 9b868184254b3778e585345f39a92e928f5a4900 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ce424b60d9bcb84826f4b17dc7ac3de073b3160f8e755742dd7b90b09e98ab83 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 5779424
</span> }
""
""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -294,9 +294,9 @@ array set modules {
</span> }
qtgamepad {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- 2a40ddffc2e932e669d3c08d50ee4a7047f24ce7
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 58653d5fb2e989ebac25be73bb0eec8d646625ecab1cb419b2ec00a5d1fe4f2e
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 389876
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 2e9e9fc24f35932b6cebeee9146a9c9f2c5ec809 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 64c7f22df2b082766be4658ab5e59e07965f1648d060598c49de5031911f2065 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 380888
</span> }
""
"port:libsdl2"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -309,9 +309,9 @@ array set modules {
</span> }
qtgraphicaleffects {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- 02242ca34e7db919d7156ac15a26301542eb8a5c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 4664b1096c848d3679b91df3062508a1992ce75eaa0eb292947dfae2b61ad4e9
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 14045416
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0211e08283a246c379f78ffc1244a0acf6129065 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 09a3e5e2958d1ac262318c1b0ecabf3493289213a808e80ea0c6b94a2acafdf0 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 14034724
</span> }
""
""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -324,9 +324,9 @@ array set modules {
</span> }
qtimageformats {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- 5d08fe5565a67748c5279b9c119990f95940ce8b
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- f5125e32ff40fe8688872cbd92b56127d17edda4471d41605da0a5bbf7adb489
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 1865016
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 786fc0578fc0ced1ed913c1b4f3d9742e03fbf98 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 39fa9a16477d31e3225938c8c9169cda4605dfd2e8811c5c945077bf9f0b453d \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1890840
</span> }
""
"port:jasper port:libmng port:tiff port:webp"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -339,9 +339,9 @@ array set modules {
</span> }
qtlocation {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- 45f0868f30edc6b5d104bffdade41f03bc76d7a2
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 1315d04bc488575918bc3e480e7c02e6721f4d1a57849241615534ecf56cc9b1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 6553488
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ cbcd84ec454ada93f08bda9c3eb9f96e2944782c \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 62def9692fd8102293786d61a924cc8a00da2c0daf867ab485a9d3f483ce4549 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 6549724
</span> }
""
"path:lib/pkgconfig/icu-uc.pc:icu port:zlib"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -354,9 +354,9 @@ array set modules {
</span> }
qtlottie {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- 96761b4a3ecd5b1e9aaa17e82be02b46e0e3a965
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 8e44fe071ccaa2bf039e1e9af2b7c6c0221182fb2395ac1682e49d8077c320d8
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 85336
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 7d206165ec6728b7af7ea9efd4f9a38ffe172500 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 8984a59a6732dd8daff3ffc89fde1ab8b17fc3d95a43412a8814f9d743c7f5d1 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 76324
</span> }
""
""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -369,9 +369,9 @@ array set modules {
</span> }
qtmacextras {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- 85c8d1233ff94834bca6a0748d266f79cb4e374f
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 207c93712f8df6cdb71544595b2aa6b9b7b082cd759fea8640f31f45cf19dcd8
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 72488
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 73b7f036edb436d7292599ef2f01e679fff1540a \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fa5245ba71e6e50a41a34467f6a9a697a7f3174d65abe18af30e6340d80bec60 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 63544
</span> }
""
""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -384,9 +384,9 @@ array set modules {
</span> }
qtmultimedia {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- e3e3929ef8cc840d4f615c2355b28bb0523e7d85
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 1040585c91f9da6768973d9c81d31d571c152464a9f5021b5270a5ab1e874429
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 3830956
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 4829ef0aa3c1ed3882680878223e572efe2f5237 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ a7b4a801d2400e05ca5e5ce9d15d2af9dc03262a3148dc57d8e2b29c13ffd7f8 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 3841580
</span> }
""
""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -399,9 +399,9 @@ array set modules {
</span> }
qtnetworkauth {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- c839d626d5aaf0fadc17f5a7797922ba9c29ea52
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 797626e86d3ecfe6c319ed3f2e26017c8dbdf7fdcb6b22317b00371ee67988d3
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 144752
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 30a06b10d94dce653b7dfb1f50786077f3dd2ca9 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 2903fd11e60cad0d4f4e0c86cae8af516db5b41f68a8736676e7ffae9a9217f1 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 135604
</span> }
""
""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -414,9 +414,9 @@ array set modules {
</span> }
qtpurchasing {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- 0fe179ae64c6db572509539dc69dc9b66609217c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- c97e5efc015d31d6a3ef38038438735e44b9d34e524ab6632d48a11f776fe24e
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 309768
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ b111c2e23448c6ea300be7d346566161fab8850c \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 59e0423a926137802c16dfb441e3c2d873a3813297fa64504d0afe6d36658844 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 300856
</span> }
""
""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -429,9 +429,9 @@ array set modules {
</span> }
qtquick3d {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- af6c40e3fb6c0bb8be360ceeaf88c7c72ae5d7c6
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- df71f11bf032e3ddbba777ecedf159a5b7cccc48147801f22e64ecb224447af3
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 55764980
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 47b3a16e3e745b7a7bdf76c85be1cc4df2e5290c \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 8642e4b3191eba7763d8a0f46272830f315fbf3d5539c5ada7fa9c1f0e8040ef \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 55783696
</span> }
""
"port:assimp"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -444,9 +444,9 @@ array set modules {
</span> }
qtquickcontrols {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- 46fd24771c4e4354163fb036777d15018dde89e7
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 6321844236fd7ef25a89b147bb6b0c3f8aaea51e88e156cf2c81ab4e321ea164
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 5982828
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 7e8d893df2cf3914dde66283f9aac033eb6439ae \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ b02430c25a6e543eed2ec6ffc7e0786ed8b5b169f3f679d21f2c489f4f06ce2a \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 5973656
</span> }
""
""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -459,9 +459,9 @@ array set modules {
</span> }
qtquickcontrols2 {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- 9621d9122d617409ab84f6c650ceac2981ece5a9
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 4d9ef0ba0369b1bb83abe71d62ae3261d908a3c039bb63556cb0901450ccb4bb
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 8294356
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ f1cb96823e730ab221bb634b4f1e571da49540cf \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fe16175f55f518d358ec3c2ba10769cc0b1bfd5b28515d3305267c61127db724 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 8285788
</span> }
""
""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -474,9 +474,9 @@ array set modules {
</span> }
qtquicktimeline {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- 0ff6d8b85d8c17b7fea2793e7803a9546d741a7f
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 861603b09e9b9c6505b0b8091cf03e19e59ea7647559b660434838fdc1529270
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 105600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 2929db63c5d4188b1169f658beee8fc6947d4b56 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 880c1c804c15cdf621041e59a4503f8ee83e5e4abc106e947a0e7356945fea6c \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 96544
</span> }
""
""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -489,9 +489,9 @@ array set modules {
</span> }
qtremoteobjects {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- 1a6f540b3613ec8ff28c3f7e6528191edc8dc378
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 755ee0d45aa4f374088d793336ea5837a1cfe26ad9b69ee0a857f58451723bf3
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 379368
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 02aa1a9be049d3773a8302852f96a028c7fc3546 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ cf9ab6f453c0cd20443a912a13fae48a7fdece8b4409adc1b57ffd319c5f53b7 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 370512
</span> }
""
""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -504,9 +504,9 @@ array set modules {
</span> }
qtscript {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- 5d3e1da4c5604fde986ab1d128e99cdfdd5591b3
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- b9fc94c913958a416a3f671bf9ff4cc237f966706e46738ed57d7c5ef0b03ef5
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 2664960
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1d3b1e56ec6be914fd7f30a4a7075ee7441c28b4 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ed6edb23556558fef44835a6a1ca5eb6a632f2df0373d11ca1e424d93658c2eb \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 2657832
</span> }
""
""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -519,9 +519,9 @@ array set modules {
</span> }
qtscxml {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- c214ab35cb94f71d98afa625fd48ea57a9404e4e
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 5a67ee5fe2a0f311d2c37ecce1854ea927ee7daab73f361b9e5531314f0baae2
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 437972
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 97b75a8f6fd5ebcf36210df1cd08e5fae7a16004 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 8e7ff0e13bbdf6bc6f3141d62cf6b21a62ed5a21a4aa2079258fb548d80885c8 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 429200
</span> }
""
""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -534,9 +534,9 @@ array set modules {
</span> }
qtsensors {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- 995cf0f58caf8ce542b3642150c90e8bc0c10ccf
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 8b2f4ee921d6b5d1c5893e1813b6e59d0cae9397832d8747aa8bcf34c369bc67
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 2059976
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 2e076d7ce2149ac4ec7029cc88e14f30aee6393d \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 65deb05352c2777a3d77737985120fc70c6a7d555d4a1a6de26af7e906f161b5 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 2051112
</span> }
""
""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -549,9 +549,9 @@ array set modules {
</span> }
qtserialbus {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- 6f57211a828195fc7915302e41c53f1d27a77568
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 6104dbb447ec475337ca96a07bf26d4fb3d06a6ff710a00892a16952a76aebf1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 359492
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0c241d8beb2946a59c791916f4fd4d7d1873f20d \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 6bbaed75788b382130660930938054e41d15474bbc9e4fc53dc422aa67cf5537 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 350808
</span> }
""
""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -564,9 +564,9 @@ array set modules {
</span> }
qtserialport {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- b85af133d1ae591b416854661a36f4c7461746c3
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 0474d9ffc599491fef8ba28f222ffe5bba7f07be0591deb99ea819e991225914
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 323500
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 4e79c9f7d4114e0f86510dbba721acf918a99aa6 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 6538fcc175c3d3b5f801d97124d693934f5a4d203e3b068a35d7ce6125bd9e98 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 314744
</span> }
""
""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -579,9 +579,9 @@ array set modules {
</span> }
qtspeech {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- fd6fb842581d6fc78139de43b224e59aa2613870
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 6fd4426e53ef5d20d764c4a7694e030c08496e2873fcc4dc13ac862e681c9456
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 104816
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ cd2582aae3bc20df93d6a6555b2294c0f217a975 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 090125ce13c4219c7e2291e7a248c0923fd8534f0667fabd544ca377e9a8b305 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 95868
</span> }
""
"port:flite"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -594,9 +594,9 @@ array set modules {
</span> }
qtsvg {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- 6f51637493a7a11eac7ec1d8a3fa6782a812b178
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 32a63a865b1bf13bf1b61ee946b2bd456c45567eea31598038632587a3f1ef9d
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 1890112
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ae7d105efa69ad30c283fa39941c0317c052bcf7 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 577b63c53bfb1c2a5099cf46540bb5b8ef595de9fcc390193cd239720b33d04b \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1880732
</span> }
""
""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -609,9 +609,9 @@ array set modules {
</span> }
qttools {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- 1ecb9595f3c2de3b483d24296622ba4b4455bf01
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 9a4084fee80a2acebb6415efa5a28dd666960129895a0bb7d97468a9f0c66506
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 8900672
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ f6f08e63c6ac3143cf0cce114733e11167c7d358 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 71946704c6bd6c925910288b97dfcc2e357d4a28e22c8651a5813aae4f238028 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 8889004
</span> }
""
"port:clang-${llvm_version}"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -624,9 +624,9 @@ array set modules {
</span> }
qttranslations {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- b034a16da4eba6cea57ceb48889d4345d8255619
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- a830ba6158ccb36fdae97ebfa33ac7c2c92f4b609786717830d65aa2e0e77612
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 1635924
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0fb0784e590754ccb6616deed8a684f7d17efbc9 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 33e077ea098c86ad5616e5ae11458484ba846db8e2f4524c0a4185c84ed6a806 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1627008
</span> }
"port:qt5-qttools"
""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -639,9 +639,9 @@ array set modules {
</span> }
qtvirtualkeyboard {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- bb28ef438fe3c50a738a1077023508e5f2040e40
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 376880f79135dfde95b636d251b1b88667f2ba4fedbca8d702b3283ba45b5e22
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 10959460
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ afcc29a259809fc458c2e9dc690181cfb020d988 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ c607b3b276acc30773771371e03febf07daedcc7f4f8bd6c3609358324ba2194 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 10955228
</span> }
""
"port:hunspell"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -654,9 +654,9 @@ array set modules {
</span> }
qtwebchannel {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- 4be5ff890a469e511407c35d5ab599b7292c370f
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 72d1998983b1e442673e5d1a2b51c4a0fd8ccd2c14501aac5927da02bbd180e5
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 211996
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 223535c768888bfea14bab62f979dda33b70f422 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 40d015b5fbbc11f75726f34614d89ac418455cf2fd5a177253fa7606642f8cf8 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 203060
</span> }
""
""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -680,9 +680,9 @@ array set modules {
</span> }
qtwebglplugin {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- 2e0b1838b7ac70b1c59575928377176e52bf5b76
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 0cde7de221c1b017169c7ae63a665db3d475d517705859c60044b3f074742cd0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 77120
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ f724abfa2132bf397b031b0d3ea4624229b6db84 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ e699d71fc382bb13455c7c7bdb9ffdf15a4962f3ec8f873406b991aafacd9d8a \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 68172
</span> }
""
""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -725,9 +725,9 @@ array set modules {
</span> }
qtwebsockets {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- 13fb1c51121fe19c3d54b38caa13c3bc0ea76802
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 49ea6431986575ce184ff77753802bcee8b24a9e6ab37c7bc053819fdb20b567
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 261924
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ f406e3ff7714c3bc69d051fa61abe90830acc364 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ addeb8da8d831a175268367576f0ea02550681a3f11670de170352a7948fba4a \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 253040
</span> }
""
""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -740,9 +740,9 @@ array set modules {
</span> }
qtwebview {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- c11934a1c50db29008462a10dd96c36a64a06672
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- f86e13d32fc2ea7032501bd55bfef64cddae9bd0dcebe2541260cc006297a7d8
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 136852
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 5e04149687a0a98dd779c6a876c447d64fb2a240 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 8e65b165df6f0608d97d8d0a9a5df691aa736ae0e76e2b93887e6fe2a247ae03 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 128192
</span> }
""
""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -755,9 +755,9 @@ array set modules {
</span> }
qtxmlpatterns {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- 8de6038308004c22ea0665be0f23b5c3762dda30
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 758e5b69d579932b645858fac8e6df657598bfdac566e35d372e9b3acca7f908
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 5192924
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 6bbd5e281d0bba8d16cf6a39fab2a1055cfb8758 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ b8390b815b248901f86ebd5f65cee363d4977581baeba37b3b2495fab848d33d \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 5189120
</span> }
""
""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1061,7 +1061,6 @@ foreach {module module_info} [array get modules] {
</span> }
long_description "Tools and Module(s) for Qt Tool Kit ${qt_major}: ${modules_provided_join}"
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> if { ${module} eq "qtbase" } {
# this subport uses configure script (NOT qmake)
PortGroup qt5 1.0
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1084,16 +1083,6 @@ foreach {module module_info} [array get modules] {
</span> # see https://trac.macports.org/ticket/59315
minimum_developerversions 16 9
<span style='display:block; white-space:pre;background:#ffe0e0;'>- patchfiles-append {*}{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- CVE-2023-32762-qtbase-5.15.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- CVE-2023-32763-qtbase-5.15.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- CVE-2023-33285-qtbase-5.15.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- CVE-2023-37369-qtbase-5.15.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- CVE-2023-38197-qtbase-5.15.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- CVE-2023-51714-qtbase-5.15.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- CVE-2024-25580-qtbase-5.15.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> # see https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=270715
patchfiles-append qtbase-5.15.9-work-around-pyside2-brokenness.patch
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1914,11 +1903,6 @@ foreach {module module_info} [array get modules] {
</span> }
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>- # special case
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if { ${module} eq "qtsvg" } {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- patchfiles-append CVE-2023-32573-qtsvg-5.15.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> # special case
if { ${module} eq "qtspeech" } {
# see https://trac.macports.org/ticket/67593
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -2046,11 +2030,6 @@ foreach {sql_names sql_info} [array get sql_plugins] {
</span> patchfiles-append patch-sql_plugins.diff
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>- # see https://bugreports.qt.io/browse/QTBUG-109832
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {${driver} eq "mysql"} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- patchfiles-append mysql-plugin-qtbug-109832.patch
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> # if there is more than one version of the database system, create variants for each version
if { [llength ${sql_info}] > 1 } {
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt5/files/CVE-2023-32573-qtsvg-5.15.diff b/aqua/qt5/files/CVE-2023-32573-qtsvg-5.15.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 6de2a8a1fc8..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/aqua/qt5/files/CVE-2023-32573-qtsvg-5.15.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,34 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/svg/qsvgfont_p.h.orig
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/svg/qsvgfont_p.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -74,6 +74,7 @@ public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- class Q_SVG_PRIVATE_EXPORT QSvgFont : public QSvgRefCounted
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ static constexpr qreal DEFAULT_UNITS_PER_EM = 1000;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- QSvgFont(qreal horizAdvX);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- void setFamilyName(const QString &name);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -86,9 +87,7 @@ public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- void draw(QPainter *p, const QPointF &point, const QString &str, qreal pixelSize, Qt::Alignment alignment) const;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- QString m_familyName;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- qreal m_unitsPerEm;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- qreal m_ascent;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- qreal m_descent;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ qreal m_unitsPerEm = DEFAULT_UNITS_PER_EM;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- qreal m_horizAdvX;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- QHash<QChar, QSvgGlyph> m_glyphs;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/svg/qsvghandler.cpp.orig
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/svg/qsvghandler.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -2668,7 +2668,7 @@ static bool parseFontFaceNode(QSvgStyleProperty *parent,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- qreal unitsPerEm = toDouble(unitsPerEmStr);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if (!unitsPerEm)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- unitsPerEm = 1000;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ unitsPerEm = QSvgFont::DEFAULT_UNITS_PER_EM;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if (!name.isEmpty())
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- font->setFamilyName(name);
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt5/files/CVE-2023-32762-qtbase-5.15.diff b/aqua/qt5/files/CVE-2023-32762-qtbase-5.15.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 2d707fdb5c1..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/aqua/qt5/files/CVE-2023-32762-qtbase-5.15.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,13 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/network/access/qhsts.cpp.orig
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/network/access/qhsts.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -364,8 +364,8 @@ quoted-pair = "\" CHAR
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- bool QHstsHeaderParser::parse(const QList<QPair<QByteArray, QByteArray>> &headers)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- for (const auto &h : headers) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- // We use '==' since header name was already 'trimmed' for us:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if (h.first == "Strict-Transport-Security") {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ // We compare directly because header name was already 'trimmed' for us:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (h.first.compare("Strict-Transport-Security", Qt::CaseInsensitive) == 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- header = h.second;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // RFC6797, 8.1:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- //
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt5/files/CVE-2023-32763-qtbase-5.15.diff b/aqua/qt5/files/CVE-2023-32763-qtbase-5.15.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index e6f0d6f8f1f..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/aqua/qt5/files/CVE-2023-32763-qtbase-5.15.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,47 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/gui/painting/qfixed_p.h.orig
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/gui/painting/qfixed_p.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -54,6 +54,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <QtGui/private/qtguiglobal_p.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "QtCore/qdebug.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "QtCore/qpoint.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <QtCore/private/qnumeric_p.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "QtCore/qsize.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- QT_BEGIN_NAMESPACE
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -182,6 +183,14 @@ Q_DECL_CONSTEXPR inline bool operator<(int i, const QFixed &f) { return i * 64 <
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- Q_DECL_CONSTEXPR inline bool operator>(const QFixed &f, int i) { return f.value() > i * 64; }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- Q_DECL_CONSTEXPR inline bool operator>(int i, const QFixed &f) { return i * 64 > f.value(); }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+inline bool qAddOverflow(QFixed v1, QFixed v2, QFixed *r)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ int val;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ bool result = add_overflow(v1.value(), v2.value(), &val);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ r->setValue(val);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return result;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #ifndef QT_NO_DEBUG_STREAM
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- inline QDebug &operator<<(QDebug &dbg, const QFixed &f)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- { return dbg << f.toReal(); }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/gui/text/qtextlayout.cpp.orig
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/gui/text/qtextlayout.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -2163,11 +2163,14 @@ found:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- eng->maxWidth = qMax(eng->maxWidth, line.textWidth);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- eng->minWidth = qMax(eng->minWidth, lbh.minw);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- eng->maxWidth += line.textWidth;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (qAddOverflow(eng->maxWidth, line.textWidth, &eng->maxWidth))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ eng->maxWidth = QFIXED_MAX;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if (line.textWidth > 0 && item < eng->layoutData->items.size())
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- eng->maxWidth += lbh.spaceData.textWidth;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (line.textWidth > 0 && item < eng->layoutData->items.size()) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (qAddOverflow(eng->maxWidth, lbh.spaceData.textWidth, &eng->maxWidth))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ eng->maxWidth = QFIXED_MAX;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- line.textWidth += trailingSpace;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if (lbh.spaceData.length) {
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt5/files/CVE-2023-33285-qtbase-5.15.diff b/aqua/qt5/files/CVE-2023-33285-qtbase-5.15.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 2ff50916667..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/aqua/qt5/files/CVE-2023-33285-qtbase-5.15.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,70 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# https://codereview.qt-project.org/c/qt/qtbase/+/477644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/network/kernel/qdnslookup_unix.cpp.orig 2023-04-24 08:43:14
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/network/kernel/qdnslookup_unix.cpp 2023-06-07 08:58:04
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -227,7 +227,6 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // responseLength in case of error, we still can extract the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // exact error code from the response.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- HEADER *header = (HEADER*)response;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- const int answerCount = ntohs(header->ancount);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- switch (header->rcode) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- case NOERROR:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -260,18 +259,31 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- // Skip the query host, type (2 bytes) and class (2 bytes).
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- char host[PACKETSZ], answer[PACKETSZ];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- unsigned char *p = response + sizeof(HEADER);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- int status = local_dn_expand(response, response + responseLength, p, host, sizeof(host));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if (status < 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ int status;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (ntohs(header->qdcount) == 1) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ // Skip the query host, type (2 bytes) and class (2 bytes).
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ status = local_dn_expand(response, response + responseLength, p, host, sizeof(host));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (status < 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ reply->error = QDnsLookup::InvalidReplyError;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ reply->errorString = tr("Could not expand domain name");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if ((p - response) + status + 4 >= responseLength)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ header->qdcount = 0xffff; // invalid reply below
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ p += status + 4;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (ntohs(header->qdcount) > 1) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- reply->error = QDnsLookup::InvalidReplyError;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- reply->errorString = tr("Could not expand domain name");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ reply->errorString = tr("Invalid reply received");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- p += status + 4;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // Extract results.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const int answerCount = ntohs(header->ancount);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- int answerIndex = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- while ((p < response + responseLength) && (answerIndex < answerCount)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- status = local_dn_expand(response, response + responseLength, p, host, sizeof(host));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -283,6 +296,11 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- const QString name = QUrl::fromAce(host);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- p += status;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if ((p - response) + 10 > responseLength) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ // probably just a truncated reply, return what we have
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- const quint16 type = (p[0] << 8) | p[1];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- p += 2; // RR type
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- p += 2; // RR class
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -290,6 +308,8 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- p += 4;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- const quint16 size = (p[0] << 8) | p[1];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- p += 2;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if ((p - response) + size > responseLength)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return; // truncated
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if (type == QDnsLookup::A) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if (size != 4) {
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt5/files/CVE-2023-37369-qtbase-5.15.diff b/aqua/qt5/files/CVE-2023-37369-qtbase-5.15.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 69f4d958564..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/aqua/qt5/files/CVE-2023-37369-qtbase-5.15.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,203 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/src/corelib/serialization/qxmlstream.cpp b/src/corelib/serialization/qxmlstream.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 7cd457ba3a..11d162cb79 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/corelib/serialization/qxmlstream.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/corelib/serialization/qxmlstream.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1302,15 +1302,18 @@ inline int QXmlStreamReaderPrivate::fastScanContentCharList()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return n;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--inline int QXmlStreamReaderPrivate::fastScanName(int *prefix)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+// Fast scan an XML attribute name (e.g. "xml:lang").
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+inline QXmlStreamReaderPrivate::FastScanNameResult
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+QXmlStreamReaderPrivate::fastScanName(Value *val)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- int n = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- uint c;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- while ((c = getChar()) != StreamEOF) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if (n >= 4096) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // This is too long to be a sensible name, and
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- // can exhaust memory
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- return 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ // can exhaust memory, or the range of decltype(*prefix)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ raiseNamePrefixTooLongError();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return {};
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- switch (c) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- case '\n':
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1339,23 +1342,23 @@ inline int QXmlStreamReaderPrivate::fastScanName(int *prefix)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- case '+':
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- case '*':
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- putChar(c);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if (prefix && *prefix == n+1) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- *prefix = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (val && val->prefix == n + 1) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ val->prefix = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- putChar(':');
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- --n;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- return n;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return FastScanNameResult(n);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- case ':':
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if (prefix) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if (*prefix == 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- *prefix = n+2;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (val) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (val->prefix == 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ val->prefix = n + 2;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- } else { // only one colon allowed according to the namespace spec.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- putChar(c);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- return n;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return FastScanNameResult(n);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- putChar(c);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- return n;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return FastScanNameResult(n);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- Q_FALLTHROUGH();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- default:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1364,12 +1367,12 @@ inline int QXmlStreamReaderPrivate::fastScanName(int *prefix)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if (prefix)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- *prefix = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (val)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ val->prefix = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- int pos = textBuffer.size() - n;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- putString(textBuffer, pos);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- textBuffer.resize(pos);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- return 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return FastScanNameResult(0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- enum NameChar { NameBeginning, NameNotBeginning, NotName };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1878,6 +1881,14 @@ void QXmlStreamReaderPrivate::raiseWellFormedError(const QString &message)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- raiseError(QXmlStreamReader::NotWellFormedError, message);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+void QXmlStreamReaderPrivate::raiseNamePrefixTooLongError()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ // TODO: add a ImplementationLimitsExceededError and use it instead
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ raiseError(QXmlStreamReader::NotWellFormedError,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ QXmlStream::tr("Length of XML attribute name exceeds implemnetation limits (4KiB "
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ "characters)."));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- void QXmlStreamReaderPrivate::parseError()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/src/corelib/serialization/qxmlstream.g b/src/corelib/serialization/qxmlstream.g
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 4321fed68a..8c6a1a5887 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/corelib/serialization/qxmlstream.g
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/corelib/serialization/qxmlstream.g
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -516,7 +516,16 @@ public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- int fastScanLiteralContent();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- int fastScanSpace();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- int fastScanContentCharList();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- int fastScanName(int *prefix = nullptr);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ struct FastScanNameResult {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ FastScanNameResult() : ok(false) {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ explicit FastScanNameResult(int len) : addToLen(len), ok(true) { }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ operator bool() { return ok; }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ int operator*() { Q_ASSERT(ok); return addToLen; }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ int addToLen;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ bool ok;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ FastScanNameResult fastScanName(Value *val = nullptr);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- inline int fastScanNMTOKEN();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -525,6 +534,7 @@ public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- void raiseError(QXmlStreamReader::Error error, const QString& message = QString());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- void raiseWellFormedError(const QString &message);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ void raiseNamePrefixTooLongError();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- QXmlStreamEntityResolver *entityResolver;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1811,7 +1821,12 @@ space_opt ::= space;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- qname ::= LETTER;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- /.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- case $rule_number: {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- sym(1).len += fastScanName(&sym(1).prefix);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ Value &val = sym(1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (auto res = fastScanName(&val))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ val.len += *res;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return false;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if (atEnd) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- resume($rule_number);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return false;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1822,7 +1837,11 @@ qname ::= LETTER;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- name ::= LETTER;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- /.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- case $rule_number:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- sym(1).len += fastScanName();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (auto res = fastScanName())
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ sym(1).len += *res;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return false;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if (atEnd) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- resume($rule_number);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return false;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/src/corelib/serialization/qxmlstream_p.h b/src/corelib/serialization/qxmlstream_p.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index e5bde7b98e..b01484cac3 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/corelib/serialization/qxmlstream_p.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/corelib/serialization/qxmlstream_p.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1005,7 +1005,16 @@ public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- int fastScanLiteralContent();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- int fastScanSpace();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- int fastScanContentCharList();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- int fastScanName(int *prefix = nullptr);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ struct FastScanNameResult {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ FastScanNameResult() : ok(false) {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ explicit FastScanNameResult(int len) : addToLen(len), ok(true) { }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ operator bool() { return ok; }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ int operator*() { Q_ASSERT(ok); return addToLen; }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ int addToLen;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ bool ok;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ FastScanNameResult fastScanName(Value *val = nullptr);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- inline int fastScanNMTOKEN();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1014,6 +1023,7 @@ public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- void raiseError(QXmlStreamReader::Error error, const QString& message = QString());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- void raiseWellFormedError(const QString &message);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ void raiseNamePrefixTooLongError();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- QXmlStreamEntityResolver *entityResolver;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1939,7 +1949,12 @@ bool QXmlStreamReaderPrivate::parse()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- case 262: {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- sym(1).len += fastScanName(&sym(1).prefix);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ Value &val = sym(1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (auto res = fastScanName(&val))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ val.len += *res;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return false;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if (atEnd) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- resume(262);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return false;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1947,7 +1962,11 @@ bool QXmlStreamReaderPrivate::parse()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- } break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- case 263:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- sym(1).len += fastScanName();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (auto res = fastScanName())
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ sym(1).len += *res;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return false;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if (atEnd) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- resume(263);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return false;
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt5/files/CVE-2023-38197-qtbase-5.15.diff b/aqua/qt5/files/CVE-2023-38197-qtbase-5.15.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 93166cef162..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/aqua/qt5/files/CVE-2023-38197-qtbase-5.15.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,219 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/src/corelib/serialization/qxmlstream.cpp b/src/corelib/serialization/qxmlstream.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index bf8a2a9..6ab5d49 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/corelib/serialization/qxmlstream.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/corelib/serialization/qxmlstream.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -160,7 +160,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- addData() or by waiting for it to arrive on the device().
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- \value UnexpectedElementError The parser encountered an element
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- that was different to those it expected.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ or token that was different to those it expected.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -295,13 +295,34 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- QXmlStreamReader is a well-formed XML 1.0 parser that does \e not
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- include external parsed entities. As long as no error occurs, the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- application code can thus be assured that the data provided by the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- stream reader satisfies the W3C's criteria for well-formed XML. For
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- example, you can be certain that all tags are indeed nested and
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- closed properly, that references to internal entities have been
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- replaced with the correct replacement text, and that attributes have
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- been normalized or added according to the internal subset of the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- DTD.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ application code can thus be assured, that
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ \list
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ \li the data provided by the stream reader satisfies the W3C's
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ criteria for well-formed XML,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ \li tokens are provided in a valid order.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ \endlist
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ Unless QXmlStreamReader raises an error, it guarantees the following:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ \list
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ \li All tags are nested and closed properly.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ \li References to internal entities have been replaced with the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ correct replacement text.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ \li Attributes have been normalized or added according to the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ internal subset of the \l DTD.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ \li Tokens of type \l StartDocument happen before all others,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ aside from comments and processing instructions.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ \li At most one DOCTYPE element (a token of type \l DTD) is present.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ \li If present, the DOCTYPE appears before all other elements,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ aside from StartDocument, comments and processing instructions.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ \endlist
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ In particular, once any token of type \l StartElement, \l EndElement,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ \l Characters, \l EntityReference or \l EndDocument is seen, no
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ tokens of type StartDocument or DTD will be seen. If one is present in
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ the input stream, out of order, an error is raised.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ \note The token types \l Comment and \l ProcessingInstruction may appear
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ anywhere in the stream.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- If an error occurs while parsing, atEnd() and hasError() return
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- true, and error() returns the error that occurred. The functions
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -620,6 +641,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- d->token = -1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return readNext();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ d->checkToken();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return d->type;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -740,6 +762,14 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+static const char QXmlStreamReader_XmlContextString[] =
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ "Prolog\0"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ "Body\0";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+static const short QXmlStreamReader_XmlContextString_indices[] = {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ 0, 7
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+};
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- /*!
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- \property QXmlStreamReader::namespaceProcessing
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- The namespace-processing flag of the stream reader
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -775,6 +805,16 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- QXmlStreamReader_tokenTypeString_indices[d->type]);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+/*!
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ \internal
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ \return \param ctxt (Prolog/Body) as a string.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+QString contextString(QXmlStreamReaderPrivate::XmlContext ctxt)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return QLatin1String(QXmlStreamReader_XmlContextString +
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ QXmlStreamReader_XmlContextString_indices[static_cast<int>(ctxt)]);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif // QT_NO_XMLSTREAMREADER
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- QXmlStreamPrivateTagStack::QXmlStreamPrivateTagStack()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -866,6 +906,8 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- type = QXmlStreamReader::NoToken;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- error = QXmlStreamReader::NoError;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ currentContext = XmlContext::Prolog;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ foundDTD = false;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- /*
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -4061,6 +4103,92 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+static bool isTokenAllowedInContext(QXmlStreamReader::TokenType type,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ QXmlStreamReaderPrivate::XmlContext loc)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ switch (type) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case QXmlStreamReader::StartDocument:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case QXmlStreamReader::DTD:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return loc == QXmlStreamReaderPrivate::XmlContext::Prolog;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case QXmlStreamReader::StartElement:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case QXmlStreamReader::EndElement:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case QXmlStreamReader::Characters:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case QXmlStreamReader::EntityReference:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case QXmlStreamReader::EndDocument:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return loc == QXmlStreamReaderPrivate::XmlContext::Body;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case QXmlStreamReader::Comment:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case QXmlStreamReader::ProcessingInstruction:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return true;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case QXmlStreamReader::NoToken:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case QXmlStreamReader::Invalid:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return false;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ default:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return false;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+/*!
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ \internal
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ \brief QXmlStreamReader::isValidToken
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ \return \c true if \param type is a valid token type.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ \return \c false if \param type is an unexpected token,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ which indicates a non-well-formed or invalid XML stream.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+bool QXmlStreamReaderPrivate::isValidToken(QXmlStreamReader::TokenType type)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ // Don't change currentContext, if Invalid or NoToken occur in the prolog
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (type == QXmlStreamReader::Invalid || type == QXmlStreamReader::NoToken)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return false;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ // If a token type gets rejected in the body, there is no recovery
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const bool result = isTokenAllowedInContext(type, currentContext);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (result || currentContext == XmlContext::Body)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return result;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ // First non-Prolog token observed => switch context to body and check again.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ currentContext = XmlContext::Body;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return isTokenAllowedInContext(type, currentContext);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+/*!
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ \internal
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ Checks token type and raises an error, if it is invalid
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ in the current context (prolog/body).
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+void QXmlStreamReaderPrivate::checkToken()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ Q_Q(QXmlStreamReader);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ // The token type must be consumed, to keep track if the body has been reached.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const XmlContext context = currentContext;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const bool ok = isValidToken(type);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ // Do nothing if an error has been raised already (going along with an unexpected token)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (error != QXmlStreamReader::Error::NoError)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (!ok) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ raiseError(QXmlStreamReader::UnexpectedElementError,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ QLatin1String("Unexpected token type %1 in %2.")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ .arg(q->tokenString(), contextString(context)));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (type != QXmlStreamReader::DTD)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ // Raise error on multiple DTD tokens
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (foundDTD) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ raiseError(QXmlStreamReader::UnexpectedElementError,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ QLatin1String("Found second DTD token in %1.").arg(contextString(context)));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ foundDTD = true;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- /*!
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- \fn bool QXmlStreamAttributes::hasAttribute(const QString &qualifiedName) const
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- \since 4.5
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/src/corelib/serialization/qxmlstream_p.h b/src/corelib/serialization/qxmlstream_p.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 8f7c9e0..708059b 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/corelib/serialization/qxmlstream_p.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/corelib/serialization/qxmlstream_p.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -804,6 +804,17 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- bool atEnd;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ enum class XmlContext
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ Prolog,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ Body,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ XmlContext currentContext = XmlContext::Prolog;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ bool foundDTD = false;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ bool isValidToken(QXmlStreamReader::TokenType type);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ void checkToken();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- /*!
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- \sa setType()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- */
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt5/files/CVE-2023-51714-qtbase-5.15.diff b/aqua/qt5/files/CVE-2023-51714-qtbase-5.15.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 376a01bc856..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/aqua/qt5/files/CVE-2023-51714-qtbase-5.15.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,99 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From ea63c28efc1d2ecb467b83a34923d12462efa96f Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From: Marc Mutz <marc.mutz@qt.io>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Date: Tue, 12 Dec 2023 20:51:56 +0100
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Subject: [PATCH] HPack: fix a Yoda Condition
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Putting the variable on the LHS of a relational operation makes the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-expression easier to read. In this case, we find that the whole
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-expression is nonsensical as an overflow protection, because if
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-name.size() + value.size() overflows, the result will exactly _not_
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-be > max() - 32, because UB will have happened.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-To be fixed in a follow-up commit.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-As a drive-by, add parentheses around the RHS.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Change-Id: I35ce598884c37c51b74756b3bd2734b9aad63c09
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-(cherry picked from commit 658607a34ead214fbacbc2cca44915655c318ea9)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-(cherry picked from commit 4f7efd41740107f90960116700e3134f5e433867)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-(cherry picked from commit 13c16b756900fe524f6d9534e8a07aa003c05e0c)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-(cherry picked from commit 1d4788a39668fb2dc5912a8d9c4272dc40e99f92)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-(cherry picked from commit 87de75b5cc946d196decaa6aef4792a6cac0b6db)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>----
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/src/network/access/http2/hpacktable.cpp b/src/network/access/http2/hpacktable.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 834214f..ab166a6 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/network/access/http2/hpacktable.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/network/access/http2/hpacktable.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -63,7 +63,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // 32 octets of overhead."
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- const unsigned sum = unsigned(name.size() + value.size());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if (std::numeric_limits<unsigned>::max() - 32 < sum)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (sum > (std::numeric_limits<unsigned>::max() - 32))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return HeaderSize();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return HeaderSize(true, quint32(sum + 32));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From 23c3fc483e8b6e21012a61f0bea884446f727776 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From: Marc Mutz <marc.mutz@qt.io>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Date: Tue, 12 Dec 2023 22:08:07 +0100
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Subject: [PATCH] HPack: fix incorrect integer overflow check
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-This code never worked:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-For the comparison with max() - 32 to trigger, on 32-bit platforms (or
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Qt 5) signed interger overflow would have had to happen in the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-addition of the two sizes. The compiler can therefore remove the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-overflow check as dead code.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-On Qt 6 and 64-bit platforms, the signed integer addition would be
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-very unlikely to overflow, but the following truncation to uint32
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-would yield the correct result only in a narrow 32-value window just
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-below UINT_MAX, if even that.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Fix by using the proper tool, qAddOverflow.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Manual conflict resolutions:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- - qAddOverflow doesn't exist in Qt 5, use private add_overflow
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- predecessor API instead
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Change-Id: I7599f2e75ff7f488077b0c60b81022591005661c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-(cherry picked from commit ee5da1f2eaf8932aeca02ffea6e4c618585e29e3)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-(cherry picked from commit debeb8878da2dc706ead04b6072ecbe7e5313860)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Reviewed-by: Marc Mutz <marc.mutz@qt.io>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-(cherry picked from commit 811b9eef6d08d929af8708adbf2a5effb0eb62d7)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-(cherry picked from commit f931facd077ce945f1e42eaa3bead208822d3e00)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-(cherry picked from commit 9ef4ca5ecfed771dab890856130e93ef5ceabef5)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Reviewed-by: MÃ¥rten Nordheim <marten.nordheim@qt.io>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>----
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/src/network/access/http2/hpacktable.cpp b/src/network/access/http2/hpacktable.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index ab166a6..de91fc0 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/network/access/http2/hpacktable.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/network/access/http2/hpacktable.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -40,6 +40,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "hpacktable_p.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <QtCore/qdebug.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <QtCore/private/qnumeric_p.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <algorithm>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <cstddef>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -62,7 +63,9 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // for counting the number of references to the name and value would have
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // 32 octets of overhead."
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- const unsigned sum = unsigned(name.size() + value.size());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ size_t sum;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (add_overflow(size_t(name.size()), size_t(value.size()), &sum))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return HeaderSize();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if (sum > (std::numeric_limits<unsigned>::max() - 32))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return HeaderSize();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return HeaderSize(true, quint32(sum + 32));
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt5/files/CVE-2024-25580-qtbase-5.15.diff b/aqua/qt5/files/CVE-2024-25580-qtbase-5.15.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index d310a824c78..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/aqua/qt5/files/CVE-2024-25580-qtbase-5.15.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,197 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/src/gui/util/qktxhandler.cpp b/src/gui/util/qktxhandler.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 0d98e97453..6a79e55109 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/gui/util/qktxhandler.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/gui/util/qktxhandler.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -73,7 +73,7 @@ struct KTXHeader {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- quint32 bytesOfKeyValueData;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--static const quint32 headerSize = sizeof(KTXHeader);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+static constexpr quint32 qktxh_headerSize = sizeof(KTXHeader);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // Currently unused, declared for future reference
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- struct KTXKeyValuePairItem {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -103,11 +103,36 @@ struct KTXMipmapLevel {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--bool QKtxHandler::canRead(const QByteArray &suffix, const QByteArray &block)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+static bool qAddOverflow(quint32 v1, quint32 v2, quint32 *r) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ // unsigned additions are well-defined
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ *r = v1 + v2;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return v1 > quint32(v1 + v2);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+// Returns the nearest multiple of 4 greater than or equal to 'value'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+static bool nearestMultipleOf4(quint32 value, quint32 *result)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ constexpr quint32 rounding = 4;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ *result = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (qAddOverflow(value, rounding - 1, result))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return true;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ *result &= ~(rounding - 1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return false;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+// Returns a slice with prechecked bounds
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+static QByteArray safeSlice(const QByteArray& array, quint32 start, quint32 length)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- Q_UNUSED(suffix)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ quint32 end = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (qAddOverflow(start, length, &end) || end > quint32(array.length()))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return {};
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return QByteArray(array.data() + start, length);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- return (qstrncmp(block.constData(), ktxIdentifier, KTX_IDENTIFIER_LENGTH) == 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+bool QKtxHandler::canRead(const QByteArray &suffix, const QByteArray &block)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ Q_UNUSED(suffix);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return block.startsWith(QByteArray::fromRawData(ktxIdentifier, KTX_IDENTIFIER_LENGTH));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- QTextureFileData QKtxHandler::read()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -115,42 +140,97 @@ QTextureFileData QKtxHandler::read()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if (!device())
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return QTextureFileData();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- QByteArray buf = device()->readAll();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- const quint32 dataSize = quint32(buf.size());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if (dataSize < headerSize || !canRead(QByteArray(), buf)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- qCDebug(lcQtGuiTextureIO, "Invalid KTX file %s", logName().constData());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const QByteArray buf = device()->readAll();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (size_t(buf.size()) > std::numeric_limits<quint32>::max()) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ qWarning(lcQtGuiTextureIO, "Too big KTX file %s", logName().constData());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return QTextureFileData();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (!canRead(QByteArray(), buf)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ qWarning(lcQtGuiTextureIO, "Invalid KTX file %s", logName().constData());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return QTextureFileData();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (buf.size() < qsizetype(qktxh_headerSize)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ qWarning(lcQtGuiTextureIO, "Invalid KTX header size in %s", logName().constData());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return QTextureFileData();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- const KTXHeader *header = reinterpret_cast<const KTXHeader *>(buf.constData());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if (!checkHeader(*header)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- qCDebug(lcQtGuiTextureIO, "Unsupported KTX file format in %s", logName().constData());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ KTXHeader header;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ memcpy(&header, buf.data(), qktxh_headerSize);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (!checkHeader(header)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ qWarning(lcQtGuiTextureIO, "Unsupported KTX file format in %s", logName().constData());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return QTextureFileData();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- QTextureFileData texData;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- texData.setData(buf);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- texData.setSize(QSize(decode(header->pixelWidth), decode(header->pixelHeight)));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- texData.setGLFormat(decode(header->glFormat));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- texData.setGLInternalFormat(decode(header->glInternalFormat));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- texData.setGLBaseInternalFormat(decode(header->glBaseInternalFormat));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- texData.setNumLevels(decode(header->numberOfMipmapLevels));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- quint32 offset = headerSize + decode(header->bytesOfKeyValueData);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- const int maxLevels = qMin(texData.numLevels(), 32); // Cap iterations in case of corrupt file.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- for (int i = 0; i < maxLevels; i++) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if (offset + sizeof(KTXMipmapLevel) > dataSize) // Corrupt file; avoid oob read
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- const KTXMipmapLevel *level = reinterpret_cast<const KTXMipmapLevel *>(buf.constData() + offset);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- quint32 levelLen = decode(level->imageSize);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- texData.setDataOffset(offset + sizeof(KTXMipmapLevel::imageSize), i);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- texData.setDataLength(levelLen, i);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- offset += sizeof(KTXMipmapLevel::imageSize) + levelLen + (3 - ((levelLen + 3) % 4));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ texData.setSize(QSize(decode(header.pixelWidth), decode(header.pixelHeight)));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ texData.setGLFormat(decode(header.glFormat));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ texData.setGLInternalFormat(decode(header.glInternalFormat));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ texData.setGLBaseInternalFormat(decode(header.glBaseInternalFormat));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ texData.setNumLevels(decode(header.numberOfMipmapLevels));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const quint32 bytesOfKeyValueData = decode(header.bytesOfKeyValueData);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ quint32 headerKeyValueSize;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (qAddOverflow(qktxh_headerSize, bytesOfKeyValueData, &headerKeyValueSize)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ qWarning(lcQtGuiTextureIO, "Overflow in size of key value data in header of KTX file %s",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ logName().constData());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return QTextureFileData();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (headerKeyValueSize >= quint32(buf.size())) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ qWarning(lcQtGuiTextureIO, "OOB request in KTX file %s", logName().constData());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return QTextureFileData();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ // Technically, any number of levels is allowed but if the value is bigger than
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ // what is possible in KTX V2 (and what makes sense) we return an error.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ // maxLevels = log2(max(width, height, depth))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const int maxLevels = (sizeof(quint32) * 8)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ - qCountLeadingZeroBits(std::max(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ { header.pixelWidth, header.pixelHeight, header.pixelDepth }));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (texData.numLevels() > maxLevels) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ qWarning(lcQtGuiTextureIO, "Too many levels in KTX file %s", logName().constData());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return QTextureFileData();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ quint32 offset = headerKeyValueSize;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ for (int level = 0; level < texData.numLevels(); level++) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const auto imageSizeSlice = safeSlice(buf, offset, sizeof(quint32));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (imageSizeSlice.isEmpty()) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ qWarning(lcQtGuiTextureIO, "OOB request in KTX file %s", logName().constData());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return QTextureFileData();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const quint32 imageSize = decode(qFromUnaligned<quint32>(imageSizeSlice.data()));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ offset += sizeof(quint32); // overflow checked indirectly above
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ texData.setDataOffset(offset, level);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ texData.setDataLength(imageSize, level);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ // Add image data and padding to offset
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ quint32 padded = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (nearestMultipleOf4(imageSize, &padded)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ qWarning(lcQtGuiTextureIO, "Overflow in KTX file %s", logName().constData());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return QTextureFileData();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ quint32 offsetNext;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (qAddOverflow(offset, padded, &offsetNext)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ qWarning(lcQtGuiTextureIO, "OOB request in KTX file %s", logName().constData());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return QTextureFileData();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ offset = offsetNext;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if (!texData.isValid()) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- qCDebug(lcQtGuiTextureIO, "Invalid values in header of KTX file %s", logName().constData());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ qWarning(lcQtGuiTextureIO, "Invalid values in header of KTX file %s",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ logName().constData());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return QTextureFileData();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -191,7 +271,7 @@ bool QKtxHandler::checkHeader(const KTXHeader &header)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- (decode(header.numberOfFaces) == 1));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--quint32 QKtxHandler::decode(quint32 val)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+quint32 QKtxHandler::decode(quint32 val) const
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return inverseEndian ? qbswap<quint32>(val) : val;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/src/gui/util/qktxhandler_p.h b/src/gui/util/qktxhandler_p.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index f831e59d95..cdf1b2eaf8 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/gui/util/qktxhandler_p.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/gui/util/qktxhandler_p.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -68,7 +68,7 @@ public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- private:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- bool checkHeader(const KTXHeader &header);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- quint32 decode(quint32 val);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ quint32 decode(quint32 val) const;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- bool inverseEndian = false;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- };
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt5/files/mysql-plugin-qtbug-109832.patch b/aqua/qt5/files/mysql-plugin-qtbug-109832.patch
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 154678f8a3d..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/aqua/qt5/files/mysql-plugin-qtbug-109832.patch
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,36 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From 5bc61ec5d028d57640b9c4cd515ed7dfebac945c Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From: Christian Ehrlicher <ch.ehrlicher@gmx.de>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Date: Sun, 12 Feb 2023 17:09:20 +0100
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Subject: [PATCH] ODBC/MySQL: fix compilation with MySQL < 5.7.9
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-MYSQL_TYPE_JSON was introduced in MySQL 5.7.9 but our documentation
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-states that we still support 5.6 so we have to define this value by
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-ourself for the older versions.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Pick-to: 5.15 6.2 6.4 6.5
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Fixes: QTBUG-109832
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Change-Id: I935edb14495d162ed58109610946b2805d37bbc4
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>----
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- src/plugins/sqldrivers/mysql/qsql_mysql.cpp | 5 +++++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 1 file changed, 5 insertions(+)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/src/plugins/sqldrivers/mysql/qsql_mysql.cpp b/src/plugins/sqldrivers/mysql/qsql_mysql.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 24cab8a04ec..63fddf2d63f 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- qsql_mysql.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ qsql_mysql.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -29,6 +29,11 @@ Q_DECLARE_METATYPE(MYSQL_RES*)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- Q_DECLARE_METATYPE(MYSQL*)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- Q_DECLARE_METATYPE(MYSQL_STMT*)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+// MYSQL_TYPE_JSON was introduced with MySQL 5.7.9
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#if defined(MYSQL_VERSION_ID) && MYSQL_VERSION_ID < 50709
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#define MYSQL_TYPE_JSON 245
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // MySQL above version 8 removed my_bool typedef while MariaDB kept it,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // by redefining it we can regain source compatibility.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- using my_bool = decltype(mysql_stmt_bind_result(nullptr, nullptr));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-GitLab
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span></pre><pre style='margin:0'>
</pre>