Compare commits
202 Commits
Author | SHA1 | Date |
---|---|---|
|
70363d0880 | |
|
d8f1d7a524 | |
|
d727853314 | |
|
6f111ade59 | |
|
8d3281a25b | |
|
c5ba3dc43e | |
|
6cce1b1233 | |
|
99a7b7e10d | |
|
87d970c5d5 | |
|
a5e651007c | |
|
0424a8b5b0 | |
|
048d2137d8 | |
|
52cb5cfa20 | |
|
fbe60f8d39 | |
|
2dd29366d0 | |
|
7cf1b36f2b | |
|
dabefd25d8 | |
|
3548249d39 | |
|
159799f24f | |
|
9c762bfb43 | |
|
abb914b769 | |
|
72b5ae0fbb | |
|
8a09cd6061 | |
|
dc07d438ad | |
|
cc25be2271 | |
|
c505c71283 | |
|
7000161d93 | |
|
9fe549303e | |
|
afc1c75b83 | |
|
92b82f31aa | |
|
ae2a637c47 | |
|
d3250a64e0 | |
|
3e7f6f93e7 | |
|
1a5c543723 | |
|
a8ff550c93 | |
|
f1bc0ab482 | |
|
2b351acc1e | |
|
0aaf400b7f | |
|
d8c2c5870f | |
|
f5dd303609 | |
|
4cd8fce414 | |
|
34c3c2ba7b | |
|
4c3347e3d3 | |
|
bce0c006e8 | |
|
fe33bd0e36 | |
|
a094a8d104 | |
|
e56d897d9c | |
|
4a376dc703 | |
|
d20cffe9a3 | |
|
8ed6ce04af | |
|
98f737ba5a | |
|
d48e9598d2 | |
|
ff52a3eeb3 | |
|
4ac28c2742 | |
|
23d23a8648 | |
|
eda8c137f0 | |
|
87e0482736 | |
|
5459b14733 | |
|
18c4c30a44 | |
|
6c00985827 | |
|
17e492aa0e | |
|
664255d3bd | |
|
356f136cff | |
|
5e08e4a080 | |
|
f9210a726e | |
|
035db48089 | |
|
cd3afda23c | |
|
6c76df9407 | |
|
bfcd08470b | |
|
31fe414dbc | |
|
6468f9c079 | |
|
aca5082db0 | |
|
44dd86e85a | |
|
e87d2cacce | |
|
0fa4bb6e6d | |
|
20a292f534 | |
|
a258953f71 | |
|
be940afb36 | |
|
5cbfe51f81 | |
|
507fe0eddd | |
|
a2f4fa4db9 | |
|
6120e659d6 | |
|
923ba9b0e0 | |
|
8cedb395cf | |
|
4c963be10c | |
|
ea12f0e1fa | |
|
9c6d6cc34e | |
|
44ae06a0f8 | |
|
de67c0519d | |
|
02252c5c62 | |
|
16ef8031d1 | |
|
e724321967 | |
|
d1a6da43d9 | |
|
6b4f3818b1 | |
|
ae07984e4d | |
|
bea0c40370 | |
|
3a12929e93 | |
|
3b3961f8ca | |
|
9fc4b6e74c | |
|
343ee6e998 | |
|
bf5d04680b | |
|
4f76b8e9ca | |
|
82a0d13a63 | |
|
192033814a | |
|
6a8a1e7326 | |
|
5811291b71 | |
|
c34c751a6a | |
|
e894279872 | |
|
f46a671628 | |
|
7db91a4ff0 | |
|
6c50b4e107 | |
|
69c9a202b6 | |
|
30a91e380c | |
|
ab9062576c | |
|
831050302c | |
|
46844ac115 | |
|
a97a8f9163 | |
|
921d3a65ee | |
|
4c4bc81e4d | |
|
241e6ae46d | |
|
6162fbda3f | |
|
b71fc696b2 | |
|
8e24008f23 | |
|
8b64b2c932 | |
|
b632435fcc | |
|
0fdcd4c059 | |
|
a0cfc469aa | |
|
58ddb0cb59 | |
|
a74a9fa59b | |
|
dfe5703894 | |
|
a894d2cd44 | |
|
7a9bc1bbea | |
|
7b9849ffcd | |
|
4e688c90a5 | |
|
22adfb20d7 | |
|
265a0921d9 | |
|
f75707f390 | |
|
4b715ffd1c | |
|
8ea90037a5 | |
|
e245437f7e | |
|
8090378c80 | |
|
d95935f332 | |
|
6e2865a3af | |
|
0844cd226c | |
|
32769146b7 | |
|
9ceb7d9081 | |
|
efb85b9bff | |
|
eaaaf190ea | |
|
8c7fe210fe | |
|
9e2e7ad9bd | |
|
1a5fd22f91 | |
|
fafeab55a2 | |
|
cc493ddebb | |
|
aeca857561 | |
|
a5f6318646 | |
|
e948ea4c6c | |
|
5b7e8cc795 | |
|
cf267c4766 | |
|
bb48598d85 | |
|
a98a18bb3d | |
|
196284c991 | |
|
18def91a7d | |
|
c427cee2d7 | |
|
7e2153e89a | |
|
81d6fcc4ca | |
|
91176c3fee | |
|
bcf4f2e66c | |
|
b1ba042d57 | |
|
9cda374bc8 | |
|
bd0ce1f91c | |
|
4a3b9c7b60 | |
|
f8d05dbeff | |
|
28a55141fc | |
|
a1a082e2ab | |
|
55cdca6d74 | |
|
15b5003df8 | |
|
16b653ffe1 | |
|
276e67ad3a | |
|
0fba51827d | |
|
399cc84ed6 | |
|
8f0534f5ad | |
|
06f985eaf7 | |
|
3c0b29765a | |
|
ca7cfd8532 | |
|
e467920f91 | |
|
ca2c23b106 | |
|
0434621809 | |
|
a0fe3d1ded | |
|
f9b532b958 | |
|
cdec2369b2 | |
|
cf7a4e4e0b | |
|
f8cf489ba4 | |
|
8ddb897df6 | |
|
8e2e39d5e1 | |
|
614302efd8 | |
|
abaad189b8 | |
|
5a70834711 | |
|
2485bf8e8a | |
|
faab8215d7 | |
|
643cc5becf | |
|
1fcfee38a9 | |
|
4d72c83364 |
|
@ -0,0 +1,6 @@
|
||||||
|
/qtbase-everywhere-src-5.12.1.tar.xz
|
||||||
|
/qtbase-everywhere-src-5.12.3.tar.xz
|
||||||
|
/qtbase-everywhere-src-5.12.4.tar.xz
|
||||||
|
/qtbase-everywhere-src-5.12.5.tar.xz
|
||||||
|
/qtbase-everywhere-src-5.13.2.tar.xz
|
||||||
|
/qtbase-everywhere-src-5.14.2.tar.xz
|
|
@ -0,0 +1,109 @@
|
||||||
|
From 276fa8383a7535765be7182883ef4aade17ce013 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Thiago Macieira <thiago.macieira@intel.com>
|
||||||
|
Date: Thu, 2 Apr 2020 12:08:41 -0300
|
||||||
|
Subject: [PATCH 44/49] QLibrary: fix deadlock caused by fix to QTBUG-39642
|
||||||
|
|
||||||
|
Commit ae6f73e8566fa76470937aca737141183929a5ec inserted a mutex around
|
||||||
|
the entire load_sys(). We had reasoed that deadlocks would only occur if
|
||||||
|
the object creation in instance() recursed into its own instance(),
|
||||||
|
which was already a bug. But we had forgotten that dlopen()/
|
||||||
|
LoadLibrary() executes initialization code from the module being loaded,
|
||||||
|
which could cause a recursion back into the same QPluginLoader or
|
||||||
|
QLibrary object. This recursion is benign because the module *is* loaded
|
||||||
|
and dlopen()/LoadLibrary() returns the same handle.
|
||||||
|
|
||||||
|
[ChangeLog][QtCore][QLibrary and QPluginLoader] Fixed a deadlock that
|
||||||
|
would happen if the plugin or library being loaded has load-time
|
||||||
|
initialization code (C++ global variables) that recursed back into the
|
||||||
|
same QLibrary or QPluginLoader object.
|
||||||
|
|
||||||
|
PS: QLibraryPrivate::loadPlugin() updates pluginState outside a mutex
|
||||||
|
lock, so pluginState should be made an atomic variable. Once that is
|
||||||
|
done, we'll only need locking the mutex to update errorString (no
|
||||||
|
locking before loading).
|
||||||
|
|
||||||
|
Fixes: QTBUG-83207
|
||||||
|
Task-number: QTBUG-39642
|
||||||
|
Change-Id: Ibdc95e9af7bd456a94ecfffd160209304e5ab2eb
|
||||||
|
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
|
||||||
|
Reviewed-by: David Faure <david.faure@kdab.com>
|
||||||
|
---
|
||||||
|
src/corelib/plugin/qlibrary.cpp | 2 --
|
||||||
|
src/corelib/plugin/qlibrary_unix.cpp | 4 ++++
|
||||||
|
src/corelib/plugin/qlibrary_win.cpp | 3 +++
|
||||||
|
3 files changed, 7 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/corelib/plugin/qlibrary.cpp b/src/corelib/plugin/qlibrary.cpp
|
||||||
|
index ddb053c26f..be9d92b204 100644
|
||||||
|
--- a/src/corelib/plugin/qlibrary.cpp
|
||||||
|
+++ b/src/corelib/plugin/qlibrary.cpp
|
||||||
|
@@ -576,9 +576,7 @@ bool QLibraryPrivate::load()
|
||||||
|
|
||||||
|
Q_TRACE(QLibraryPrivate_load_entry, fileName);
|
||||||
|
|
||||||
|
- mutex.lock();
|
||||||
|
bool ret = load_sys();
|
||||||
|
- mutex.unlock();
|
||||||
|
if (qt_debug_component()) {
|
||||||
|
if (ret) {
|
||||||
|
qDebug() << "loaded library" << fileName;
|
||||||
|
diff --git a/src/corelib/plugin/qlibrary_unix.cpp b/src/corelib/plugin/qlibrary_unix.cpp
|
||||||
|
index 017aa97b66..a5c72f81d9 100644
|
||||||
|
--- a/src/corelib/plugin/qlibrary_unix.cpp
|
||||||
|
+++ b/src/corelib/plugin/qlibrary_unix.cpp
|
||||||
|
@@ -123,6 +123,7 @@ QStringList QLibraryPrivate::prefixes_sys()
|
||||||
|
|
||||||
|
bool QLibraryPrivate::load_sys()
|
||||||
|
{
|
||||||
|
+ QMutexLocker locker(&mutex);
|
||||||
|
QString attempt;
|
||||||
|
QFileSystemEntry fsEntry(fileName);
|
||||||
|
|
||||||
|
@@ -213,6 +214,7 @@ bool QLibraryPrivate::load_sys()
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+ locker.unlock();
|
||||||
|
bool retry = true;
|
||||||
|
Handle hnd = nullptr;
|
||||||
|
for (int prefix = 0; retry && !hnd && prefix < prefixes.size(); prefix++) {
|
||||||
|
@@ -273,6 +275,8 @@ bool QLibraryPrivate::load_sys()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
+
|
||||||
|
+ locker.relock();
|
||||||
|
if (!hnd) {
|
||||||
|
errorString = QLibrary::tr("Cannot load library %1: %2").arg(fileName, qdlerror());
|
||||||
|
}
|
||||||
|
diff --git a/src/corelib/plugin/qlibrary_win.cpp b/src/corelib/plugin/qlibrary_win.cpp
|
||||||
|
index 000bf76276..ef58724be8 100644
|
||||||
|
--- a/src/corelib/plugin/qlibrary_win.cpp
|
||||||
|
+++ b/src/corelib/plugin/qlibrary_win.cpp
|
||||||
|
@@ -78,6 +78,7 @@ bool QLibraryPrivate::load_sys()
|
||||||
|
// fileName
|
||||||
|
//
|
||||||
|
// NB If it's a plugin we do not ever try the ".dll" extension
|
||||||
|
+ QMutexLocker locker(&mutex);
|
||||||
|
QStringList attempts;
|
||||||
|
|
||||||
|
if (pluginState != IsAPlugin)
|
||||||
|
@@ -95,6 +96,7 @@ bool QLibraryPrivate::load_sys()
|
||||||
|
attempts.prepend(QDir::rootPath() + fileName);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+ locker.unlock();
|
||||||
|
Handle hnd = nullptr;
|
||||||
|
for (const QString &attempt : qAsConst(attempts)) {
|
||||||
|
#ifndef Q_OS_WINRT
|
||||||
|
@@ -115,6 +117,7 @@ bool QLibraryPrivate::load_sys()
|
||||||
|
#ifndef Q_OS_WINRT
|
||||||
|
SetErrorMode(oldmode);
|
||||||
|
#endif
|
||||||
|
+ locker.relock();
|
||||||
|
if (!hnd) {
|
||||||
|
errorString = QLibrary::tr("Cannot load library %1: %2").arg(
|
||||||
|
QDir::toNativeSeparators(fileName), qt_error_string());
|
||||||
|
--
|
||||||
|
2.25.2
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [ -z "$QT_XCB_FORCE_SOFTWARE_OPENGL" ]; then
|
||||||
|
|
||||||
|
QT5_CHECK_OPENGL_VERSION=`LANG=C glxinfo 2> /dev/null | grep '^OpenGL version string: ' | head -n 1 | sed -e 's/^OpenGL version string: \([0-9]\).*$/\1/g'` ||:
|
||||||
|
|
||||||
|
if [ "$QT5_CHECK_OPENGL_VERSION" == "1" ]; then
|
||||||
|
QT_XCB_FORCE_SOFTWARE_OPENGL=1
|
||||||
|
export QT_XCB_FORCE_SOFTWARE_OPENGL
|
||||||
|
fi
|
||||||
|
|
||||||
|
unset QT5_CHECK_OPENGL_VERSION
|
||||||
|
|
||||||
|
fi
|
|
@ -1 +0,0 @@
|
||||||
qt5-qtbase is in RHEL 7
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
%_qt5 @@NAME@@
|
||||||
|
%_qt5_epoch @@EPOCH@@
|
||||||
|
%_qt5_version @@VERSION@@
|
||||||
|
%_qt5_evr @@EVR@@
|
|
@ -0,0 +1,23 @@
|
||||||
|
/* qconfig.h */
|
||||||
|
/* This file is here to prevent a file conflict on multiarch systems. A
|
||||||
|
* conflict will occur because qconfig.h has arch-specific definitions.
|
||||||
|
*
|
||||||
|
* DO NOT INCLUDE THE NEW FILE DIRECTLY -- ALWAYS INCLUDE THIS ONE INSTEAD. */
|
||||||
|
|
||||||
|
#ifndef QCONFIG_MULTILIB_H
|
||||||
|
#define QCONFIG_MULTILIB_H
|
||||||
|
|
||||||
|
#ifndef __WORDSIZE
|
||||||
|
#include <bits/wordsize.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if __WORDSIZE == 32
|
||||||
|
#include "QtCore/qconfig-32.h"
|
||||||
|
#elif __WORDSIZE == 64
|
||||||
|
#include "QtCore/qconfig-64.h"
|
||||||
|
#else
|
||||||
|
#error "unexpected value for __WORDSIZE macro"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
diff -up qtbase-everywhere-src-5.12.1/src/plugins/sqldrivers/configure.json.firebird qtbase-everywhere-src-5.12.1/src/plugins/sqldrivers/configure.json
|
||||||
|
--- qtbase-everywhere-src-5.12.1/src/plugins/sqldrivers/configure.json.firebird 2019-01-28 11:11:52.000000000 -0600
|
||||||
|
+++ qtbase-everywhere-src-5.12.1/src/plugins/sqldrivers/configure.json 2019-02-03 13:41:27.392305128 -0600
|
||||||
|
@@ -49,10 +49,11 @@
|
||||||
|
"ibase": {
|
||||||
|
"label": "InterBase",
|
||||||
|
"test": {},
|
||||||
|
- "headers": "ibase.h",
|
||||||
|
+ "headers": "firebird/ibase.h",
|
||||||
|
"sources": [
|
||||||
|
{ "libs": "-lgds32_ms", "condition": "config.win32" },
|
||||||
|
- { "libs": "-lgds", "condition": "!config.win32" }
|
||||||
|
+ { "libs": "-lgds", "condition": "!config.win32" },
|
||||||
|
+ { "libs": "-lfbclient", "condition": "!config.win32" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"mysql": {
|
||||||
|
diff -up qtbase-everywhere-src-5.12.1/src/plugins/sqldrivers/ibase/qsql_ibase_p.h.firebird qtbase-everywhere-src-5.12.1/src/plugins/sqldrivers/ibase/qsql_ibase_p.h
|
||||||
|
--- qtbase-everywhere-src-5.12.1/src/plugins/sqldrivers/ibase/qsql_ibase_p.h.firebird 2019-01-28 11:11:52.000000000 -0600
|
||||||
|
+++ qtbase-everywhere-src-5.12.1/src/plugins/sqldrivers/ibase/qsql_ibase_p.h 2019-02-03 13:27:30.683142996 -0600
|
||||||
|
@@ -52,7 +52,7 @@
|
||||||
|
//
|
||||||
|
|
||||||
|
#include <QtSql/qsqldriver.h>
|
||||||
|
-#include <ibase.h>
|
||||||
|
+#include <firebird/ibase.h>
|
||||||
|
|
||||||
|
#ifdef QT_PLUGIN
|
||||||
|
#define Q_EXPORT_SQLDRIVER_IBASE
|
|
@ -0,0 +1,146 @@
|
||||||
|
From f432c08882ffebe5074ea28de871559a98a4d094 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Lars Knoll <lars.knoll@qt.io>
|
||||||
|
Date: Wed, 26 Feb 2020 10:42:10 +0100
|
||||||
|
Subject: Add an expansion limit for entities
|
||||||
|
|
||||||
|
Recursively defined entities can easily exhaust all available
|
||||||
|
memory. Limit entity expansion to a default of 4096 characters to
|
||||||
|
avoid DoS attacks when a user loads untrusted content.
|
||||||
|
|
||||||
|
[ChangeLog][QtCore][QXmlStream] QXmlStreamReader does now
|
||||||
|
limit the expansion of entities to 4096 characters. Documents where
|
||||||
|
a single entity expands to more characters than the limit are not
|
||||||
|
considered well formed. The limit is there to avoid DoS attacks through
|
||||||
|
recursively expanding entities when loading untrusted content. Qt 5.15
|
||||||
|
will add methods that allow changing that limit.
|
||||||
|
|
||||||
|
Fixes: QTBUG-47417
|
||||||
|
Change-Id: I94387815d74fcf34783e136387ee57fac5ded0c9
|
||||||
|
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
|
||||||
|
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
|
||||||
|
(cherry picked from commit fd4be84d23a0db4186cb42e736a9de3af722c7f7)
|
||||||
|
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
|
||||||
|
---
|
||||||
|
src/corelib/serialization/qxmlstream.g | 14 ++++++++++++-
|
||||||
|
src/corelib/serialization/qxmlstream_p.h | 14 ++++++++++++-
|
||||||
|
.../serialization/qxmlstream/tst_qxmlstream.cpp | 23 ++++++++++++++++++++--
|
||||||
|
3 files changed, 47 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/corelib/serialization/qxmlstream.g b/src/corelib/serialization/qxmlstream.g
|
||||||
|
index 10bfcd491c..5726bafb26 100644
|
||||||
|
--- a/src/corelib/serialization/qxmlstream.g
|
||||||
|
+++ b/src/corelib/serialization/qxmlstream.g
|
||||||
|
@@ -277,9 +277,19 @@ public:
|
||||||
|
QHash<QStringView, Entity> entityHash;
|
||||||
|
QHash<QStringView, Entity> parameterEntityHash;
|
||||||
|
QXmlStreamSimpleStack<Entity *>entityReferenceStack;
|
||||||
|
+ int entityExpansionLimit = 4096;
|
||||||
|
+ int entityLength = 0;
|
||||||
|
inline bool referenceEntity(Entity &entity) {
|
||||||
|
if (entity.isCurrentlyReferenced) {
|
||||||
|
- raiseWellFormedError(QXmlStream::tr("Recursive entity detected."));
|
||||||
|
+ raiseWellFormedError(QXmlStream::tr("Self-referencing entity detected."));
|
||||||
|
+ return false;
|
||||||
|
+ }
|
||||||
|
+ // entityLength represents the amount of additional characters the
|
||||||
|
+ // entity expands into (can be negative for e.g. &). It's used to
|
||||||
|
+ // avoid DoS attacks through recursive entity expansions
|
||||||
|
+ entityLength += entity.value.size() - entity.name.size() - 2;
|
||||||
|
+ if (entityLength > entityExpansionLimit) {
|
||||||
|
+ raiseWellFormedError(QXmlStream::tr("Entity expands to more characters than the entity expansion limit."));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
entity.isCurrentlyReferenced = true;
|
||||||
|
@@ -830,6 +840,8 @@ entity_done ::= ENTITY_DONE;
|
||||||
|
/.
|
||||||
|
case $rule_number:
|
||||||
|
entityReferenceStack.pop()->isCurrentlyReferenced = false;
|
||||||
|
+ if (entityReferenceStack.isEmpty())
|
||||||
|
+ entityLength = 0;
|
||||||
|
clearSym();
|
||||||
|
break;
|
||||||
|
./
|
||||||
|
diff --git a/src/corelib/serialization/qxmlstream_p.h b/src/corelib/serialization/qxmlstream_p.h
|
||||||
|
index 61f501f81b..31053f8e0b 100644
|
||||||
|
--- a/src/corelib/serialization/qxmlstream_p.h
|
||||||
|
+++ b/src/corelib/serialization/qxmlstream_p.h
|
||||||
|
@@ -774,9 +774,19 @@ public:
|
||||||
|
QHash<QStringView, Entity> entityHash;
|
||||||
|
QHash<QStringView, Entity> parameterEntityHash;
|
||||||
|
QXmlStreamSimpleStack<Entity *>entityReferenceStack;
|
||||||
|
+ int entityExpansionLimit = 4096;
|
||||||
|
+ int entityLength = 0;
|
||||||
|
inline bool referenceEntity(Entity &entity) {
|
||||||
|
if (entity.isCurrentlyReferenced) {
|
||||||
|
- raiseWellFormedError(QXmlStream::tr("Recursive entity detected."));
|
||||||
|
+ raiseWellFormedError(QXmlStream::tr("Self-referencing entity detected."));
|
||||||
|
+ return false;
|
||||||
|
+ }
|
||||||
|
+ // entityLength represents the amount of additional characters the
|
||||||
|
+ // entity expands into (can be negative for e.g. &). It's used to
|
||||||
|
+ // avoid DoS attacks through recursive entity expansions
|
||||||
|
+ entityLength += entity.value.size() - entity.name.size() - 2;
|
||||||
|
+ if (entityLength > entityExpansionLimit) {
|
||||||
|
+ raiseWellFormedError(QXmlStream::tr("Entity expands to more characters than the entity expansion limit."));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
entity.isCurrentlyReferenced = true;
|
||||||
|
@@ -1308,6 +1318,8 @@ bool QXmlStreamReaderPrivate::parse()
|
||||||
|
|
||||||
|
case 10:
|
||||||
|
entityReferenceStack.pop()->isCurrentlyReferenced = false;
|
||||||
|
+ if (entityReferenceStack.isEmpty())
|
||||||
|
+ entityLength = 0;
|
||||||
|
clearSym();
|
||||||
|
break;
|
||||||
|
|
||||||
|
diff --git a/tests/auto/corelib/serialization/qxmlstream/tst_qxmlstream.cpp b/tests/auto/corelib/serialization/qxmlstream/tst_qxmlstream.cpp
|
||||||
|
index 8fdf91b090..1f9a0d575d 100644
|
||||||
|
--- a/tests/auto/corelib/serialization/qxmlstream/tst_qxmlstream.cpp
|
||||||
|
+++ b/tests/auto/corelib/serialization/qxmlstream/tst_qxmlstream.cpp
|
||||||
|
@@ -393,8 +393,6 @@ public:
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
- QXmlStreamReader reader(&inputFile);
|
||||||
|
-
|
||||||
|
/* See testcases.dtd which reads: 'Nonvalidating parsers
|
||||||
|
* must also accept "invalid" testcases, but validating ones must reject them.' */
|
||||||
|
if(type == QLatin1String("invalid") || type == QLatin1String("valid"))
|
||||||
|
@@ -580,6 +578,8 @@ private slots:
|
||||||
|
void roundTrip() const;
|
||||||
|
void roundTrip_data() const;
|
||||||
|
|
||||||
|
+ void entityExpansionLimit() const;
|
||||||
|
+
|
||||||
|
private:
|
||||||
|
static QByteArray readFile(const QString &filename);
|
||||||
|
|
||||||
|
@@ -1756,6 +1756,25 @@ void tst_QXmlStream::roundTrip_data() const
|
||||||
|
"</root>\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
+void tst_QXmlStream::entityExpansionLimit() const
|
||||||
|
+{
|
||||||
|
+ QString xml = QStringLiteral("<?xml version=\"1.0\"?>"
|
||||||
|
+ "<!DOCTYPE foo ["
|
||||||
|
+ "<!ENTITY a \"0123456789\" >"
|
||||||
|
+ "<!ENTITY b \"&a;&a;&a;&a;&a;&a;&a;&a;&a;&a;\" >"
|
||||||
|
+ "<!ENTITY c \"&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;\" >"
|
||||||
|
+ "<!ENTITY d \"&c;&c;&c;&c;&c;&c;&c;&c;&c;&c;\" >"
|
||||||
|
+ "]>"
|
||||||
|
+ "<foo>&d;&d;&d;</foo>");
|
||||||
|
+ {
|
||||||
|
+ QXmlStreamReader reader(xml);
|
||||||
|
+ do {
|
||||||
|
+ reader.readNext();
|
||||||
|
+ } while (!reader.atEnd());
|
||||||
|
+ QCOMPARE(reader.error(), QXmlStreamReader::NotWellFormedError);
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
void tst_QXmlStream::roundTrip() const
|
||||||
|
{
|
||||||
|
QFETCH(QString, in);
|
||||||
|
--
|
||||||
|
cgit v0.2.1
|
|
@ -0,0 +1,13 @@
|
||||||
|
diff --git a/mkspecs/common/gcc-base.conf b/mkspecs/common/gcc-base.conf
|
||||||
|
index e7e6ee1..ff2a939 100644
|
||||||
|
--- a/mkspecs/common/gcc-base.conf
|
||||||
|
+++ b/mkspecs/common/gcc-base.conf
|
||||||
|
@@ -32,7 +32,7 @@
|
||||||
|
#
|
||||||
|
|
||||||
|
QMAKE_CFLAGS_OPTIMIZE = -O2
|
||||||
|
-QMAKE_CFLAGS_OPTIMIZE_FULL = -O3
|
||||||
|
+QMAKE_CFLAGS_OPTIMIZE_FULL = -O2
|
||||||
|
QMAKE_CFLAGS_OPTIMIZE_DEBUG = -Og
|
||||||
|
QMAKE_CFLAGS_OPTIMIZE_SIZE = -Os
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,9 @@
|
||||||
|
diff -up qtbase-everywhere-src-5.11.1/mkspecs/features/uikit/devices.py.me qtbase-everywhere-src-5.11.1/mkspecs/features/uikit/devices.py
|
||||||
|
--- qtbase-everywhere-src-5.11.1/mkspecs/features/uikit/devices.py.me 2018-06-23 11:29:21.750066271 +0200
|
||||||
|
+++ qtbase-everywhere-src-5.11.1/mkspecs/features/uikit/devices.py 2018-06-23 11:30:07.457292033 +0200
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-#!/usr/bin/python
|
||||||
|
+#!/usr/bin/python3
|
||||||
|
|
||||||
|
#############################################################################
|
||||||
|
##
|
|
@ -0,0 +1,14 @@
|
||||||
|
diff -up qtbase-everywhere-src-5.12.1/src/gui/Qt5GuiConfigExtras.cmake.in.foo qtbase-everywhere-src-5.12.1/src/gui/Qt5GuiConfigExtras.cmake.in
|
||||||
|
--- qtbase-everywhere-src-5.12.1/src/gui/Qt5GuiConfigExtras.cmake.in.foo 2019-04-30 15:18:24.886346423 -0500
|
||||||
|
+++ qtbase-everywhere-src-5.12.1/src/gui/Qt5GuiConfigExtras.cmake.in 2019-04-30 15:19:48.303873296 -0500
|
||||||
|
@@ -66,8 +66,10 @@ unset(_GL_INCDIRS)
|
||||||
|
# Don\'t check for existence of the "_qt5gui_OPENGL_INCLUDE_DIR" because it is
|
||||||
|
# optional.
|
||||||
|
|
||||||
|
+if (NOT ${_qt5gui_OPENGL_INCLUDE_DIR} STREQUAL "/usr/include")
|
||||||
|
list(APPEND Qt5Gui_INCLUDE_DIRS ${_qt5gui_OPENGL_INCLUDE_DIR})
|
||||||
|
set_property(TARGET Qt5::Gui APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${_qt5gui_OPENGL_INCLUDE_DIR})
|
||||||
|
+endif()
|
||||||
|
|
||||||
|
unset(_qt5gui_OPENGL_INCLUDE_DIR CACHE)
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
diff -up qtbase-everywhere-src-5.14.2/src/corelib/global/qlibraryinfo.cpp.no_relocatable qtbase-everywhere-src-5.14.2/src/corelib/global/qlibraryinfo.cpp
|
||||||
|
--- qtbase-everywhere-src-5.14.2/src/corelib/global/qlibraryinfo.cpp.no_relocatable 2020-03-27 04:49:31.000000000 -0500
|
||||||
|
+++ qtbase-everywhere-src-5.14.2/src/corelib/global/qlibraryinfo.cpp 2020-04-13 15:13:44.075705226 -0500
|
||||||
|
@@ -671,8 +671,11 @@ static QString getPrefix(
|
||||||
|
# if QT_CONFIGURE_CROSSBUILD
|
||||||
|
if (group == QLibraryInfo::DevicePaths)
|
||||||
|
return QString::fromLocal8Bit(QT_CONFIGURE_PREFIX_PATH);
|
||||||
|
-# endif
|
||||||
|
+# elif 0 //QT_CONFIG(relocatable)
|
||||||
|
return getExtPrefixFromHostBinDir();
|
||||||
|
+# else
|
||||||
|
+ return QString::fromLocal8Bit(QT_CONFIGURE_PREFIX_PATH);
|
||||||
|
+# endif
|
||||||
|
#elif QT_CONFIG(relocatable)
|
||||||
|
return getRelocatablePrefix();
|
||||||
|
#else
|
|
@ -0,0 +1,12 @@
|
||||||
|
diff -up qtbase-everywhere-src-5.12.1/src/plugins/platforms/xcb/qxcbscreen.cpp.hidpi_scale_at_192 qtbase-everywhere-src-5.12.1/src/plugins/platforms/xcb/qxcbscreen.cpp
|
||||||
|
--- qtbase-everywhere-src-5.12.1/src/plugins/platforms/xcb/qxcbscreen.cpp.hidpi_scale_at_192 2019-02-03 13:21:27.866906481 -0600
|
||||||
|
+++ qtbase-everywhere-src-5.12.1/src/plugins/platforms/xcb/qxcbscreen.cpp 2019-02-03 13:23:47.554767565 -0600
|
||||||
|
@@ -744,7 +744,7 @@ void QXcbScreen::updateGeometry(const QR
|
||||||
|
// Use 128 as a reference DPI on small screens. This favors "small UI" over "large UI".
|
||||||
|
qreal referenceDpi = physicalSize().width() <= 320 ? 128 : 96;
|
||||||
|
|
||||||
|
- m_pixelDensity = qMax(1, qRound(dpi/referenceDpi));
|
||||||
|
+ m_pixelDensity = qMax(1, (int) (dpi/referenceDpi)); //instead of rounding at 1.5, round at 2.0 (same as GNOME)
|
||||||
|
m_geometry = geometry;
|
||||||
|
m_availableGeometry = geometry & m_virtualDesktop->workArea();
|
||||||
|
QWindowSystemInterface::handleScreenGeometryChange(QPlatformScreen::screen(), m_geometry, m_availableGeometry);
|
|
@ -0,0 +1,33 @@
|
||||||
|
diff -r -u a/mkspecs/linux-g++/qmake.conf b/mkspecs/linux-g++/qmake.conf
|
||||||
|
--- a/mkspecs/linux-g++/qmake.conf 2015-10-30 06:20:01.000000000 -0200
|
||||||
|
+++ b/mkspecs/linux-g++/qmake.conf 2015-11-05 11:23:23.230741601 -0200
|
||||||
|
@@ -5,6 +5,7 @@
|
||||||
|
MAKEFILE_GENERATOR = UNIX
|
||||||
|
CONFIG += incremental
|
||||||
|
QMAKE_INCREMENTAL_STYLE = sublib
|
||||||
|
+QMAKE_CFLAGS_RELEASE += -O2
|
||||||
|
|
||||||
|
include(../common/linux.conf)
|
||||||
|
include(../common/gcc-base-unix.conf)
|
||||||
|
diff -r -u a/mkspecs/linux-g++-32/qmake.conf b/mkspecs/linux-g++-32/qmake.conf
|
||||||
|
--- a/mkspecs/linux-g++-32/qmake.conf 2015-10-30 06:20:01.000000000 -0200
|
||||||
|
+++ b/mkspecs/linux-g++-32/qmake.conf 2015-11-05 11:22:19.761494470 -0200
|
||||||
|
@@ -10,6 +10,7 @@
|
||||||
|
|
||||||
|
QMAKE_CFLAGS = -m32
|
||||||
|
QMAKE_LFLAGS = -m32
|
||||||
|
+QMAKE_CFLAGS_RELEASE += -O2
|
||||||
|
|
||||||
|
include(../common/gcc-base-unix.conf)
|
||||||
|
include(../common/g++-unix.conf)
|
||||||
|
diff -r -u a/mkspecs/linux-g++-64/qmake.conf b/mkspecs/linux-g++-64/qmake.conf
|
||||||
|
--- a/mkspecs/linux-g++-64/qmake.conf 2015-10-30 06:20:01.000000000 -0200
|
||||||
|
+++ b/mkspecs/linux-g++-64/qmake.conf 2015-11-05 11:22:49.497610248 -0200
|
||||||
|
@@ -13,6 +13,7 @@
|
||||||
|
|
||||||
|
QMAKE_CFLAGS = -m64
|
||||||
|
QMAKE_LFLAGS = -m64
|
||||||
|
+QMAKE_CFLAGS_RELEASE += -O2
|
||||||
|
|
||||||
|
include(../common/gcc-base-unix.conf)
|
||||||
|
include(../common/g++-unix.conf)
|
|
@ -0,0 +1,15 @@
|
||||||
|
diff -up qtbase-opensource-src-5.7.1/src/tools/moc/main.cpp.moc_WORDSIZE qtbase-opensource-src-5.7.1/src/tools/moc/main.cpp
|
||||||
|
--- qtbase-opensource-src-5.7.1/src/tools/moc/main.cpp.moc_WORDSIZE 2016-12-01 02:17:04.000000000 -0600
|
||||||
|
+++ qtbase-opensource-src-5.7.1/src/tools/moc/main.cpp 2016-12-08 12:37:28.931589338 -0600
|
||||||
|
@@ -179,6 +179,11 @@ int runMoc(int argc, char **argv)
|
||||||
|
Moc moc;
|
||||||
|
pp.macros["Q_MOC_RUN"];
|
||||||
|
pp.macros["__cplusplus"];
|
||||||
|
+ pp.macros["_SYS_SYSMACROS_H_OUTER"];
|
||||||
|
+ Macro macro;
|
||||||
|
+ macro.symbols = Preprocessor::tokenize(QByteArray::number(Q_PROCESSOR_WORDSIZE*8), 1, Preprocessor::TokenizeDefine);
|
||||||
|
+ macro.symbols.removeLast(); // remove the EOF symbol
|
||||||
|
+ pp.macros.insert("__WORDSIZE", macro);
|
||||||
|
|
||||||
|
// Don't stumble over GCC extensions
|
||||||
|
Macro dummyVariadicFunctionMacro;
|
|
@ -0,0 +1,11 @@
|
||||||
|
--- qtbase-opensource-src-5.8.0/src/corelib/global/qglobal.h.orig 2017-01-26 10:45:40.905010896 +0100
|
||||||
|
+++ qtbase-opensource-src-5.8.0/src/corelib/global/qglobal.h 2017-01-26 10:46:50.299858887 +0100
|
||||||
|
@@ -55,7 +55,7 @@
|
||||||
|
/*
|
||||||
|
can be used like #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0))
|
||||||
|
*/
|
||||||
|
-#define QT_VERSION_CHECK(major, minor, patch) ((major<<16)|(minor<<8)|(patch))
|
||||||
|
+#define QT_VERSION_CHECK(qt_version_check_major, qt_version_check_minor, qt_version_check_patch) ((qt_version_check_major<<16)|(qt_version_check_minor<<8)|(qt_version_check_patch))
|
||||||
|
|
||||||
|
#ifdef QT_BOOTSTRAPPED
|
||||||
|
#include <QtCore/qconfig-bootstrapped.h>
|
|
@ -0,0 +1,12 @@
|
||||||
|
diff -up qtbase-opensource-src-5.9.0/src/plugins/sqldrivers/mysql/qsql_mysql.cpp.than qtbase-opensource-src-5.9.0/src/plugins/sqldrivers/mysql/qsql_mysql.cpp
|
||||||
|
diff -up qtbase-opensource-src-5.9.0/src/plugins/sqldrivers/mysql/qsql_mysql_p.h.than qtbase-opensource-src-5.9.0/src/plugins/sqldrivers/mysql/qsql_mysql_p.h
|
||||||
|
--- qtbase-opensource-src-5.9.0/src/plugins/sqldrivers/mysql/qsql_mysql_p.h.than 2017-07-14 13:43:50.831203768 +0200
|
||||||
|
+++ qtbase-opensource-src-5.9.0/src/plugins/sqldrivers/mysql/qsql_mysql_p.h 2017-07-14 13:44:24.364948006 +0200
|
||||||
|
@@ -58,6 +58,7 @@
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <mysql.h>
|
||||||
|
+#include <mysql_version.h>
|
||||||
|
|
||||||
|
#ifdef QT_PLUGIN
|
||||||
|
#define Q_EXPORT_SQLDRIVER_MYSQL
|
|
@ -0,0 +1,12 @@
|
||||||
|
diff -up qtbase-everywhere-src-5.10.1/qmake/Makefile.unix.qmake_LFLAGS qtbase-everywhere-src-5.10.1/qmake/Makefile.unix
|
||||||
|
--- qtbase-everywhere-src-5.10.1/qmake/Makefile.unix.qmake_LFLAGS 2018-02-08 12:24:48.000000000 -0600
|
||||||
|
+++ qtbase-everywhere-src-5.10.1/qmake/Makefile.unix 2018-02-15 10:25:07.077763061 -0600
|
||||||
|
@@ -142,7 +142,7 @@ CPPFLAGS = -g $(EXTRA_CPPFLAGS) \
|
||||||
|
-DQT_NO_FOREACH
|
||||||
|
|
||||||
|
CXXFLAGS = $(EXTRA_CXXFLAGS) $(CONFIG_CXXFLAGS) $(CPPFLAGS)
|
||||||
|
-LFLAGS = $(EXTRA_LFLAGS) $(CONFIG_LFLAGS)
|
||||||
|
+LFLAGS = $(EXTRA_LFLAGS) $(CONFIG_LFLAGS) $(QMAKE_LFLAGS_RELEASE)
|
||||||
|
|
||||||
|
first all: $(BUILD_PATH)/bin/qmake$(EXEEXT)
|
||||||
|
qmake: $(BUILD_PATH)/bin/qmake$(EXEEXT)
|
|
@ -0,0 +1,20 @@
|
||||||
|
diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp
|
||||||
|
index b8bfad4f16..676fdfad5e 100644
|
||||||
|
--- a/src/gui/kernel/qguiapplication.cpp
|
||||||
|
+++ b/src/gui/kernel/qguiapplication.cpp
|
||||||
|
@@ -1376,14 +1376,7 @@ void QGuiApplicationPrivate::createPlatformIntegration()
|
||||||
|
if (sessionType == QByteArrayLiteral("x11") && !platformName.contains(QByteArrayLiteral("xcb"))) {
|
||||||
|
platformName = QByteArrayLiteral("xcb");
|
||||||
|
} else if (sessionType == QByteArrayLiteral("wayland") && !platformName.contains(QByteArrayLiteral("wayland"))) {
|
||||||
|
- QByteArray currentDesktop = qgetenv("XDG_CURRENT_DESKTOP").toLower();
|
||||||
|
- QByteArray sessionDesktop = qgetenv("XDG_SESSION_DESKTOP").toLower();
|
||||||
|
- if (currentDesktop.contains("gnome") || sessionDesktop.contains("gnome")) {
|
||||||
|
- qInfo() << "Warning: Ignoring XDG_SESSION_TYPE=wayland on Gnome."
|
||||||
|
- << "Use QT_QPA_PLATFORM=wayland to run on Wayland anyway.";
|
||||||
|
- } else {
|
||||||
|
- platformName = QByteArrayLiteral("wayland");
|
||||||
|
- }
|
||||||
|
+ platformName = QByteArrayLiteral("wayland");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#ifdef QT_QPA_DEFAULT_PLATFORM_NAME
|
|
@ -0,0 +1,3 @@
|
||||||
|
[Rules]
|
||||||
|
*.debug=false
|
||||||
|
qt.qpa.xcb.xcberror.warning=false
|
|
@ -0,0 +1 @@
|
||||||
|
SHA512 (qtbase-everywhere-src-5.14.2.tar.xz) = 8c83e06d58b56e9f288e83d6c3dd4ad6cc9f1eb1a32c7b44fb912fda34ed7255766fd9fa60cd740ee001df7d6172f25df05f1f95e986c3e793fbcd9bf4f18de9
|
|
@ -0,0 +1 @@
|
||||||
|
qtbase-everywhere-src
|
|
@ -0,0 +1,16 @@
|
||||||
|
diff --git a/mkspecs/features/qt_module.prf b/mkspecs/features/qt_module.prf
|
||||||
|
index e6a0d97..cf93041 100644
|
||||||
|
--- a/mkspecs/features/qt_module.prf
|
||||||
|
+++ b/mkspecs/features/qt_module.prf
|
||||||
|
@@ -216,9 +216,9 @@ android: CONFIG += qt_android_deps no_linker_version_script
|
||||||
|
QMAKE_LFLAGS += $${QMAKE_LFLAGS_VERSION_SCRIPT}$$verscript
|
||||||
|
|
||||||
|
internal_module {
|
||||||
|
- verscript_content = "Qt_$${QT_MAJOR_VERSION}_PRIVATE_API { *; };"
|
||||||
|
+ verscript_content = "Qt_$${QT_MAJOR_VERSION}.$${QT_MINOR_VERSION}.$${QT_PATCH_VERSION}_PRIVATE_API { *; };"
|
||||||
|
} else {
|
||||||
|
- verscript_content = "Qt_$${QT_MAJOR_VERSION}_PRIVATE_API {" \
|
||||||
|
+ verscript_content = "Qt_$${QT_MAJOR_VERSION}.$${QT_MINOR_VERSION}.$${QT_PATCH_VERSION}_PRIVATE_API {" \
|
||||||
|
" qt_private_api_tag*;"
|
||||||
|
|
||||||
|
private_api_headers = $$SYNCQT.PRIVATE_HEADER_FILES $$SYNCQT.QPA_HEADER_FILES
|
Loading…
Reference in New Issue