Package: qtbase-opensource-src-gles / 5.15.8+dfsg-3

Metadata

Package Version Patches format
qtbase-opensource-src-gles 5.15.8+dfsg-3 3.0 (quilt)

Patch series

view the series file
Patch File delta Description
mime_globs.diff | (download)

src/corelib/mimetypes/qmimedatabase.cpp | 11 7 + 4 - 0 !
src/corelib/mimetypes/qmimeglobpattern.cpp | 5 4 + 1 - 0 !
2 files changed, 11 insertions(+), 5 deletions(-)

 adjust qmimedatabase implementation
 When multiple globs match, and the result from magic sniffing is
 unrelated to any of those globs, globs have priority and one of them
 should be picked up.
fusion_checkable_qpushbutton.diff | (download)

src/widgets/styles/qfusionstyle.cpp | 8 0 + 8 - 0 !
1 file changed, 8 deletions(-)

 qpushbutton/fusion style: don't ignore qicon::on icon
 The fusion style did ignore the QIcon::On icon because it reset
 State_On to avoid the visual shift of a pressed button.
 But it's not needed to reset this flag - the shift does not happen
 because the fusion style does return 0 as offset for
 PM_ButtonShiftHorizontal/PM_ButtonShiftVertical so no shifting will
 happen.
fix_recursion_crash.diff | (download)

src/widgets/styles/qstylesheetstyle.cpp | 3 3 + 0 - 0 !
tests/auto/widgets/styles/qstylesheetstyle/tst_qstylesheetstyle.cpp | 18 18 + 0 - 0 !
2 files changed, 21 insertions(+)

 fix recursion crash when calling setstylesheet with qproperty-stylesheet
 When calling setStyleSheet with property qproperty-styleSheet,
 QStyleSheetStyle::polish will call QStyleSheetStyle::setProperties,
 and then QStyleSheetStyle::setProperties goes on to call setProperty.
 Because there is property qproperty-styleSheet, it will update
 stylesheet by calling QStyleSheetStyle::polish.
 This causes the recursive call to crash.
mysql_field_readonly.diff | (download)

src/plugins/sqldrivers/mysql/qsql_mysql.cpp | 28 13 + 15 - 0 !
1 file changed, 13 insertions(+), 15 deletions(-)

 treat the mysql_field as read-only
 The MariaDB-connector-c version 3.2 and MariaDB server version 10.6
 cooperate to avoid re-transferring the query metadata, so the fact that
 we were modifying it was causing it to improperly decode the DATETIME
 data types into string, as we had asked. We ended up with a 7-byte
 string that was actually the date binary-encoded.
openssl3.diff | (download)

src/network/ssl/qsslcontext_openssl.cpp | 4 2 + 2 - 0 !
src/network/ssl/qssldiffiehellmanparameters_openssl.cpp | 51 0 + 51 - 0 !
src/network/ssl/qsslsocket_openssl_symbols.cpp | 22 16 + 6 - 0 !
src/network/ssl/qsslsocket_openssl_symbols_p.h | 16 11 + 5 - 0 !
4 files changed, 29 insertions(+), 64 deletions(-)

 upstream fixes to support openssl 3.0
CVE 2022 25255.diff | (download)

src/corelib/io/qprocess_unix.cpp | 28 15 + 13 - 0 !
tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp | 4 2 + 2 - 0 !
2 files changed, 17 insertions(+), 15 deletions(-)

 qprocess: ensure we don't accidentally execute something from cwd
 Unless "." (or the empty string) is in $PATH, we're not supposed to find
 executables in the current directory. This is how the Unix shells behave
 and we match their behavior. It's also the behavior Qt had prior to 5.9
 (commit 28666d167aa8e602c0bea25ebc4d51b55005db13). On Windows, searching
 the current directory is the norm, so we keep that behavior.
 .
 This commit does not add an explicit check for an empty return from
 QStandardPaths::findExecutable(). Instead, we allow that empty string to
 go all the way to execve(2), which will fail with ENOENT. We could catch
 it early, before fork(2), but why add code for the error case?
 .
 See https://kde.org/info/security/advisory-20220131-1.txt
openssl_set_options.diff | (download)

src/network/ssl/qsslcontext_openssl.cpp | 2 1 + 1 - 0 !
src/network/ssl/qsslsocket_openssl.cpp | 4 2 + 2 - 0 !
src/network/ssl/qsslsocket_openssl_p.h | 8 7 + 1 - 0 !
src/network/ssl/qsslsocket_openssl_symbols.cpp | 2 1 + 1 - 0 !
src/network/ssl/qsslsocket_openssl_symbols_p.h | 2 1 + 1 - 0 !
5 files changed, 12 insertions(+), 6 deletions(-)

 update function argument of ssl_ctx_set_options
 openssl3 uses uint64_t for the options argument in SSL_CTX_set_options,
 older ones used long.
 sizeof(long) is not the same on any platform as sizeof(uint64_t)
qmenu_set_transient_parent.diff | (download)

src/widgets/widgets/qmenu.cpp | 25 25 + 0 - 0 !
src/widgets/widgets/qmenu_p.h | 1 1 + 0 - 0 !
2 files changed, 26 insertions(+)

 widgets: settransientparent() when a qmenu is a window
 On some platforms, such as X11 and Wayland with some compositors,
 QMenu could be a popup window, which should be set a transient parent
 to get relative position, which is requested by Wayland.
 .
 Added transientParentWindow() for QMenuPrivate like QDialogPrivate.
gnome_wayland.diff | (download)

src/gui/kernel/qguiapplication.cpp | 9 1 + 8 - 0 !
1 file changed, 1 insertion(+), 8 deletions(-)

 use wayland platform plugin on gnome wayland sessions by default
 Qt wayland platform plugin has improved quite a lot and it is now pretty
 much usable on Gnome. It also improves user experience a lot on HiDPI
 displays.
revert_wm_state.diff | (download)

src/plugins/platforms/xcb/qxcbwindow.cpp | 115 12 + 103 - 0 !
src/plugins/platforms/xcb/qxcbwindow.h | 16 0 + 16 - 0 !
2 files changed, 12 insertions(+), 119 deletions(-)

 revert "xcb: implement missing bits from icccm 4.1.4 wm_state handling"
 This reverts commit e946e6895a8517a887ac246905e0769edd766fcc.
 .
 It clears the duplicate show() and hide() too aggressive in
 handleDeferredTasks() and can cause visible states out of sync between
 qt and system(x11) when user switches visible on and off very
 frequently.
 .
 This change also reverts 28138aa80a14279a72af2818f5bbbaa670283964.
recreate_xcb_window.diff | (download)

src/plugins/platforms/xcb/qxcbwindow.cpp | 14 14 + 0 - 0 !
src/plugins/platforms/xcb/qxcbwindow.h | 9 9 + 0 - 0 !
2 files changed, 23 insertions(+)

 xcb: recreate xcb window under some conditions
 Some netWmState needs to be set during unmap/hide(), which is too
fix_alt_backtick.diff | (download)

src/platformsupport/input/xkbcommon/qxkbcommon.cpp | 12 6 + 6 - 0 !
src/platformsupport/input/xkbcommon/qxkbcommon_p.h | 4 2 + 2 - 0 !
2 files changed, 8 insertions(+), 8 deletions(-)

 fix alt+` shortcut on non-us layouts
 Make it possible for non-letter-keys with Latin 1 symbols (`, !, @ etc.)
 to participate in shortcuts also, when the keys generate national
 symbols on non-Latin layout.
 .
 For example, in Russian layout, "`" key generates cyrillic "" letter of
 national alphabet, so shortcuts with the key should still work
 regardless of the actual layout.
image_deletion_order.diff | (download)

src/gui/image/qimagereader.cpp | 6 3 + 3 - 0 !
src/gui/image/qimagewriter.cpp | 6 3 + 3 - 0 !
2 files changed, 6 insertions(+), 6 deletions(-)

 fix deletion order in qimagereader/writer destructors
 The device would be deleted before the image format handler, and hence
 be a dangling pointer that could easily cause a crash if the handler
 or codec would access it on destruction, e.g. for cleanup.
qxcbwindow_set_geometry.diff | (download)

src/plugins/platforms/xcb/qxcbwindow.cpp | 10 5 + 5 - 0 !
1 file changed, 5 insertions(+), 5 deletions(-)

 set geometry property in qxcbwindow after checking minimum size
 QXcbWindow::create() bound the window's size to windowMinimumSize(),
 after its size had been inherited from parent().
 QPlatformWindow::setGeometry() was called before that sanity check.
 .
 When a fullscreen window is re-mapped from a deactivated screen to the
 remaining screen, the call to QPlatformWindow::setGeometry() assigns
 an invalid QRect to QPlatformWindowPrivate::rect
 The negative int values x2 and/or y2 cause
 QXcbBackingStoreImage::flushPixmap to address unmapped memory and
 crash.
 .
 This patch moves the call to QPlatformWindow::setGeometry() from
 before to after bounding to a minimum value. That assures a valid
 rectangle to be assigned in all cases.
CVE 2023 24607.diff | (download)

src/plugins/sqldrivers/odbc/qsql_odbc.cpp | 206 118 + 88 - 0 !
1 file changed, 118 insertions(+), 88 deletions(-)

 fix denial-of-service in qt sql odbc driver plugin
CVE 2023 32763.diff | (download)

src/gui/painting/qfixed_p.h | 9 9 + 0 - 0 !
src/gui/text/qtextlayout.cpp | 9 6 + 3 - 0 !
2 files changed, 15 insertions(+), 3 deletions(-)

 fix buffer overflow in qt svg
 Adds qAddOverflow and qMulOverflow definitions to QFixed.
gnukfreebsd.diff | (download)

mkspecs/features/qt_functions.prf | 2 2 + 0 - 0 !
mkspecs/gnukfreebsd-g++/qmake.conf | 54 54 + 0 - 0 !
mkspecs/gnukfreebsd-g++/qplatformdefs.h | 84 84 + 0 - 0 !
3 files changed, 140 insertions(+)

 initial gnu/kfreebsd support
 - add a gnukfreebsd-g++ qmake mkspec, mostly copied from the hurd-g++ one
 - properly use LD_LIBRARY_PATH on GNU/* systems
no_htmlinfo_example.diff | (download)

examples/xml/xml.pro | 3 1 + 2 - 0 !
1 file changed, 1 insertion(+), 2 deletions(-)

 disable htmlinfo example which contains non-free files
remove_privacy_breaches.diff | (download)

doc/global/template/scripts/main.js | 5 0 + 5 - 0 !
1 file changed, 5 deletions(-)

 remove non-used privacy-breach code
 This code makes Lintian unhappy. But we are really not using it, it only
 gets inserted when building the online doc.
 Anyways the best way to calm down Lintian is to simply remove it.
link_fbclient.diff | (download)

src/plugins/sqldrivers/configure.json | 2 1 + 1 - 0 !
1 file changed, 1 insertion(+), 1 deletion(-)

 build ibase sql plugin against firebird
gnukfreebsd_linker_warnings.diff | (download)

src/corelib/configure.json | 3 3 + 0 - 0 !
1 file changed, 3 insertions(+)

 catch linker warnings in some config tests
 Without this, qmake wrongly thinks that the tests succeed, for example:
 .
 ./config.tests/unix/futimens/futimens.cpp:44: warning: futimens is not implemented and will always fail
 test config.corelib.tests.futimens succeeded
armv4.diff | (download)

src/corelib/global/qprocessordetection.h | 5 5 + 0 - 0 !
1 file changed, 5 insertions(+)

 support armv4 architecture, needed for armel builds
nonlinux_utime.diff | (download)

qmake/library/ioutils.cpp | 2 1 + 1 - 0 !
src/corelib/io/qfilesystemengine_unix.cpp | 2 1 + 1 - 0 !
2 files changed, 2 insertions(+), 2 deletions(-)

 guard utime_now/utime_omit usages
qdoc_default_incdirs.diff | (download)

mkspecs/features/qt_docs.prf | 4 4 + 0 - 0 !
1 file changed, 4 insertions(+)

 pass default include directories to qdoc
path_max.diff | (download)

src/corelib/io/qfilesystemengine_unix.cpp | 4 4 + 0 - 0 !
1 file changed, 4 insertions(+)

 avoid unconditional path_max usage
 Use a "safe" size in case PATH_MAX is not defined; in the end, this should not
 be used, as a allocating realpath() will be used instead.
qstorageinfo_linux.diff | (download)

src/corelib/io/qstorageinfo_unix.cpp | 2 2 + 0 - 0 !
1 file changed, 2 insertions(+)

 limit linux-only code with q_os_linux
 The QStorageInfo/QStorageIterator implementation used for Linux is used also
 on Hurd, as it uses an interface provided by GNU libc.
 QStorageIterator::device() tries to use PATH_MAX (unavailable on the Hurd)
 to lookup a /dev/block/ path, which exists on Linux only; hence, perform that
 check within a Q_OS_LINUX block.
cross_build_mysql.diff | (download)

src/plugins/sqldrivers/configure.json | 1 1 + 0 - 0 !
1 file changed, 1 insertion(+)

 call pkgconfig in order to be able to cross build qtbase with mysql.
 Qt's build system calls mysql_config... which won't work in a cross build
 environment like Debian's, as it will throw an exec format error.
 .
 In order to solve this call pkgconfig and use mysqlclient.pc.
cast_types_for_egl_x11_test.diff | (download)

src/gui/configure.json | 4 2 + 2 - 0 !
1 file changed, 2 insertions(+), 2 deletions(-)

 properly cast types for libglvnd 1.3.4
revert_startBlocking_removal.diff | (download)

src/concurrent/qtconcurrentthreadengine.cpp | 33 33 + 0 - 0 !
src/concurrent/qtconcurrentthreadengine.h | 23 23 + 0 - 0 !
2 files changed, 56 insertions(+)

 revert "remove the dead code for blocking methods from qtconcurrent"
 It's a binary incompatible change.