qtbase-opensource-src.git
19 months agoCVE-2024-25580
Debian Qt/KDE Maintainers [Sun, 28 Apr 2024 18:48:02 +0000 (20:48 +0200)]
CVE-2024-25580

Gbp-Pq: Name CVE-2024-25580.diff

19 months ago[PATCH] HPack: fix incorrect integer overflow check
Marc Mutz [Tue, 12 Dec 2023 21:08:07 +0000 (22:08 +0100)]
[PATCH] HPack: fix incorrect integer overflow check

This code never worked:

For the comparison with max() - 32 to trigger, on 32-bit platforms (or
Qt 5) signed interger overflow would have had to happen in the
addition of the two sizes. The compiler can therefore remove the
overflow check as dead code.

On Qt 6 and 64-bit platforms, the signed integer addition would be
very unlikely to overflow, but the following truncation to uint32
would yield the correct result only in a narrow 32-value window just
below UINT_MAX, if even that.

Fix by using the proper tool, qAddOverflow.

Manual conflict resolutions:
 - qAddOverflow doesn't exist in Qt 5, use private add_overflow
   predecessor API instead

Change-Id: I7599f2e75ff7f488077b0c60b81022591005661c
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
(cherry picked from commit ee5da1f2eaf8932aeca02ffea6e4c618585e29e3)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
(cherry picked from commit debeb8878da2dc706ead04b6072ecbe7e5313860)
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
(cherry picked from commit 811b9eef6d08d929af8708adbf2a5effb0eb62d7)
(cherry picked from commit f931facd077ce945f1e42eaa3bead208822d3e00)
(cherry picked from commit 9ef4ca5ecfed771dab890856130e93ef5ceabef5)
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Gbp-Pq: Name CVE-2023-51714.diff

19 months agoQXmlStreamReader: Raise error on unexpected tokens
Debian Qt/KDE Maintainers [Sun, 28 Apr 2024 18:48:02 +0000 (20:48 +0200)]
QXmlStreamReader: Raise error on unexpected tokens

Origin: upstream, https://download.qt.io/official_releases/qt/5.15/CVE-2023-38197-qtbase-5.15.diff
Last-Update: 2023-07-15

QXmlStreamReader accepted multiple DOCTYPE elements, containing DTD
fragments in the XML prolog, and in the XML body.
Well-formed but invalid XML files - with multiple DTD fragments in
prolog and body, combined with recursive entity expansions - have
caused infinite loops in QXmlStreamReader.

This patch implements a token check in QXmlStreamReader.
A stream is allowed to start with an XML prolog. StartDocument
and DOCTYPE elements are only allowed in this prolog, which
may also contain ProcessingInstruction and Comment elements.
As soon as anything else is seen, the prolog ends.
After that, the prolog-specific elements are treated as unexpected.
Furthermore, the prolog can contain at most one DOCTYPE element.

Update the documentation to reflect the new behavior.
Add an autotest that checks the new error cases are correctly detected,
and no error is raised for legitimate input.

The original OSS-Fuzz files (see bug reports) are not included in this
patch for file size reasons. They have been tested manually. Each of
them has more than one DOCTYPE element, causing infinite loops in
recursive entity expansions. The newly implemented functionality
detects those invalid DTD fragments. By raising an error, it aborts
stream reading before an infinite loop occurs.

Thanks to OSS-Fuzz for finding this.

Gbp-Pq: Name CVE-2023-38197.diff

19 months agoQXmlStreamReader: make fastScanName() indicate parsing status to callers
Debian Qt/KDE Maintainers [Sun, 28 Apr 2024 18:48:02 +0000 (20:48 +0200)]
QXmlStreamReader: make fastScanName() indicate parsing status to callers

Origin: upstream, commits
 https://code.qt.io/cgit/qt/qtbase.git/commit/?id=1a423ce4372d18a7
 https://code.qt.io/cgit/qt/qtbase.git/commit/?id=6326bec46a618c72
 https://code.qt.io/cgit/qt/qtbase.git/commit/?id=bdc8dc51380d2ce4
 https://code.qt.io/cgit/qt/qtbase.git/commit/?id=3bc3b8d69a291aa5
 .
 Based on KDE's backport:
 https://invent.kde.org/qt/qt/qtbase/-/merge_requests/263
Last-Update: 2023-07-15

This fixes a crash while parsing an XML file with garbage data, the file
starts with '<' then garbage data:
- The loop in the parse() keeps iterating until it hits "case 262:",
  which calls fastScanName()
- fastScanName() iterates over the text buffer scanning for the
  attribute name (e.g. "xml:lang"), until it finds ':'
- Consider a Value val, fastScanName() is called on it, it would set
  val.prefix to a number > val.len, then it would hit the 4096 condition
  and return (returned 0, now it returns the equivalent of
  std::null_opt), which means that val.len doesn't get modified, making
  it smaller than val.prefix
- The code would try constructing an XmlStringRef with negative length,
  which would hit an assert in one of QStringView's constructors

Add an assert to the XmlStringRef constructor.

Add unittest based on the file from the bug report.

Credit to OSS-Fuzz.

Gbp-Pq: Name CVE-2023-37369.diff

19 months agoSsl: Copy the on-demand cert loading bool from default config
Debian Qt/KDE Maintainers [Sun, 28 Apr 2024 18:48:02 +0000 (20:48 +0200)]
Ssl: Copy the on-demand cert loading bool from default config

Origin: upstream, https://code.qt.io/cgit/qt/qtbase.git/commit/?id=57ba6260c0801055
Last-Update: 2023-06-08

Otherwise individual sockets will still load system certificates when
a chain doesn't match against the configured CA certificates.
That's not intended behavior, since specifically setting the CA
certificates means you don't want the system certificates to be used.

This is potentially a breaking change because now, if you ever add a
CA to the default config, it will disable loading system certificates
on demand for all sockets. And the only way to re-enable it is to
create a null-QSslConfiguration and set it as the new default.

Gbp-Pq: Name CVE-2023-34410.diff

19 months agoQSQL/ODBC: fix regression (trailing NUL)
Debian Qt/KDE Maintainers [Sun, 28 Apr 2024 18:48:02 +0000 (20:48 +0200)]
QSQL/ODBC: fix regression (trailing NUL)

Origin: upstream, https://code.qt.io/cgit/qt/qtbase.git/commit/?id=9020034b3b6a3a81
Last-Update: 2023-06-30

When we fixed the callers of toSQLTCHAR() to use the result's size()
instead of the input's (which differ, if sizeof(SQLTCHAR) != 2), we
exposed callers to the append(0), which changes the size() of the
result QVLA. Callers that don't rely on NUL-termination (all?) now saw
an additional training NUL.

Fix by not NUL-terminating, and changing the only user of SQL_NTS to
use an explicit length.

Gbp-Pq: Name sql_odbc_fix_unicode_check.diff

19 months agoSQL/ODBC: add another check to detect unicode availability in driver
Debian Qt/KDE Maintainers [Sun, 28 Apr 2024 18:48:02 +0000 (20:48 +0200)]
SQL/ODBC: add another check to detect unicode availability in driver

Origin: upstream, https://code.qt.io/cgit/qt/qtbase.git/commit/?id=f19320748d282b1e
Last-Update: 2023-06-30

Since ODBC does not have a direct way finding out if unicode is
supported by the underlying driver the ODBC plugin does some checks. As
a last resort a sql statement is executed which returns a string. But
even this may fail because the select statement has no FROM part which
is rejected by at least Oracle does not allow. Therefore add another
query which is correct for Oracle & DB2 as a workaround. The question
why the first three statements to check for unicode availability fail
is still open but can't be checked since I've no access to an oracle
database.

Gbp-Pq: Name sql_odbc_more_unicode_checks.diff

19 months agoQDnsLookup/Unix: make sure we don't overflow the buffer
Debian Qt/KDE Maintainers [Sun, 28 Apr 2024 18:48:02 +0000 (20:48 +0200)]
QDnsLookup/Unix: make sure we don't overflow the buffer

Origin: upstream, https://code.qt.io/cgit/qt/qtbase.git/commit/?id=7dba2c87619d558a
Last-Update: 2023-05-25

The DNS Records are variable length and encode their size in 16 bits
before the Record Data (RDATA). Ensure that both the RDATA and the
Record header fields before it fall inside the buffer we have.

Additionally reject any replies containing more than one query records.

Gbp-Pq: Name CVE-2023-33285.diff

19 months agohsts: match header names case insensitively
Debian Qt/KDE Maintainers [Sun, 28 Apr 2024 18:48:02 +0000 (20:48 +0200)]
hsts: match header names case insensitively

Origin: upstream, https://download.qt.io/official_releases/qt/5.15/CVE-2023-32762-qtbase-5.15.diff
Last-Update: 2023-05-22

Header field names are always considered to be case-insensitive.

Gbp-Pq: Name CVE-2023-32762.diff

19 months agofix buffer overflow in Qt SVG
Debian Qt/KDE Maintainers [Sun, 28 Apr 2024 18:48:02 +0000 (20:48 +0200)]
fix buffer overflow in Qt SVG

Origin: upstream, https://download.qt.io/official_releases/qt/5.15/CVE-2023-32763-qtbase-5.15.diff
Last-Update: 2023-05-22

Adds qAddOverflow and qMulOverflow definitions to QFixed.

Gbp-Pq: Name CVE-2023-32763.diff

19 months agodo not set Qt::ToolTip flag for QShapedPixmapWindow
Debian Qt/KDE Maintainers [Sun, 28 Apr 2024 18:48:02 +0000 (20:48 +0200)]
do not set Qt::ToolTip flag for QShapedPixmapWindow

Origin: upstream, https://code.qt.io/cgit/qt/qtbase.git/commit/?id=180b496b537089b8
Bug: https://bugreports.qt.io/browse/QTBUG-98048
Last-Update: 2023-05-20

This hint is not really needed in the first place and only causes
problems in some environments.

For example in KDE, the compositor animates changes in position and size
for all ToolTip windows. However, this is not wanted here because we use
this window as a thumbnail for a drag-and-drop operation.
Before this patch the dragged element would lag significantly behind the
cursor. Now it works as expected, i.e. the dragged element follows the
cursor immediately.

Gbp-Pq: Name qshapedpixmapwindow_no_tooltip.diff

19 months agoFix denial-of-service in Qt SQL ODBC driver plugin
Debian Qt/KDE Maintainers [Sun, 28 Apr 2024 18:48:02 +0000 (20:48 +0200)]
Fix denial-of-service in Qt SQL ODBC driver plugin

Origin: upstream, https://download.qt.io/official_releases/qt/5.15/CVE-2023-24607-qtbase-5.15.diff
Last-Update: 2023-02-26

Gbp-Pq: Name CVE-2023-24607.diff

19 months agoset geometry property in QXcbWindow after checking minimum size
Debian Qt/KDE Maintainers [Sun, 28 Apr 2024 18:48:02 +0000 (20:48 +0200)]
set geometry property in QXcbWindow after checking minimum size

Origin: upstream, https://code.qt.io/cgit/qt/qtbase.git/commit/?id=6a3627b6c5aa5109
Last-Update: 2023-01-04

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.

Gbp-Pq: Name qxcbwindow_set_geometry.diff

19 months agofix deletion order in QImageReader/Writer destructors
Debian Qt/KDE Maintainers [Sun, 28 Apr 2024 18:48:02 +0000 (20:48 +0200)]
fix deletion order in QImageReader/Writer destructors

Origin: upstream, commits
 https://code.qt.io/cgit/qt/qtbase.git/commit/?id=f091026be1deb4b4
 https://code.qt.io/cgit/qt/qtbase.git/commit/?id=5633cb69f68ca3d3
Last-Update: 2023-02-26

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.

Gbp-Pq: Name image_deletion_order.diff

19 months agofix Alt+` shortcut on non-US layouts
Debian Qt/KDE Maintainers [Sun, 28 Apr 2024 18:48:02 +0000 (20:48 +0200)]
fix Alt+` shortcut on non-US layouts

Origin: upstream, https://code.qt.io/cgit/qt/qtbase.git/commit?id=62e697fd568f6acd
Last-Update: 2022-12-03

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.

Gbp-Pq: Name fix_alt_backtick.diff

19 months agoxcb: recreate xcb window under some conditions
Debian Qt/KDE Maintainers [Sun, 28 Apr 2024 18:48:02 +0000 (20:48 +0200)]
xcb: recreate xcb window under some conditions

Origin: upstream, https://code.qt.io/cgit/qt/qtbase.git/commit/?id=f9e4402ffeef791e
Last-Update: 2022-11-24

Some netWmState needs to be set during unmap/hide(), which is too
difficult to follow, and causes m_mapped status out of sync very easily
sometimes, which we had tried in
e946e6895a8517a887ac246905e0769edd766fcc .

Destroy the xcb window and recreate new could make the thing
much easier. This practice is also used in other platforms, such
as cocoa plugin.

In Qt 4, the platform window was destroyed and re-created in this
situation on all platforms, which was not ported into Qt5.

See also the code between setWinId(0) and createWinId() in
QWidgetPrivate::setParent_sys() in qwidget_x11.cpp/qwidget_win.cpp/
qwidget_mac.mm.

Gbp-Pq: Name recreate_xcb_window.diff

19 months agorevert "xcb: implement missing bits from ICCCM 4.1.4 WM_STATE handling"
Debian Qt/KDE Maintainers [Sun, 28 Apr 2024 18:48:02 +0000 (20:48 +0200)]
revert "xcb: implement missing bits from ICCCM 4.1.4 WM_STATE handling"

Origin: upstream, https://code.qt.io/cgit/qt/qtbase.git/commit/?id=d27a6235246764be
Last-Update: 2023-01-04

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.

Gbp-Pq: Name revert_wm_state.diff

19 months agouse wayland platform plugin on GNOME wayland sessions by default
Debian Qt/KDE Maintainers [Sun, 28 Apr 2024 18:48:02 +0000 (20:48 +0200)]
use wayland platform plugin on GNOME wayland sessions by default

Origin: upstream, https://code.qt.io/cgit/qt/qtbase.git/commit/?id=dda7dab8274991e4
Last-Update: 2022-10-16

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.

Gbp-Pq: Name gnome_wayland.diff

19 months agowidgets: setTransientParent() when a QMenu is a window
Debian Qt/KDE Maintainers [Sun, 28 Apr 2024 18:48:02 +0000 (20:48 +0200)]
widgets: setTransientParent() when a QMenu is a window

Origin: upstream, https://code.qt.io/cgit/qt/qtbase.git/commit/?id=493a85a9e4688744
Last-Update: 2022-10-16

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.

Gbp-Pq: Name qmenu_set_transient_parent.diff

19 months agoupdate function argument of SSL_CTX_set_options
Debian Qt/KDE Maintainers [Sun, 28 Apr 2024 18:48:02 +0000 (20:48 +0200)]
update function argument of SSL_CTX_set_options

Origin: upstream, https://code.qt.io/cgit/qt/qtbase.git/commit/?id=e995bfc0ea783c15
 Backported for 5.15 by the patch author, Michael Saxl.
Last-Update: 2022-08-07

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)

Gbp-Pq: Name openssl_set_options.diff

19 months agoQProcess: ensure we don't accidentally execute something from CWD
Debian Qt/KDE Maintainers [Sun, 28 Apr 2024 18:48:02 +0000 (20:48 +0200)]
QProcess: ensure we don't accidentally execute something from CWD

Origin: upstream, https://download.qt.io/official_releases/qt/5.15/CVE-2022-25255-qprocess5-15.diff
Last-Update: 2022-02-21

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

Gbp-Pq: Name CVE-2022-25255.diff

19 months agoupstream fixes to support OpenSSL 3.0
Debian Qt/KDE Maintainers [Sun, 28 Apr 2024 18:48:02 +0000 (20:48 +0200)]
upstream fixes to support OpenSSL 3.0

Origin: upstream, commits
 https://code.qt.io/cgit/qt/qtbase.git/commit/?id=3186ca3e3972cf46
 https://code.qt.io/cgit/qt/qtbase.git/commit/?id=408656c6f9de326c
 https://code.qt.io/cgit/qt/qtbase.git/commit/?id=ae6590e360fbb04d
 and a small part of
 https://code.qt.io/cgit/qt/qtbase.git/commit/?id=4c0f81490ba0c4ec
Last-Update: 2021-12-09

Gbp-Pq: Name openssl3.diff

19 months agotreat the MYSQL_FIELD as read-only
Debian Qt/KDE Maintainers [Sun, 28 Apr 2024 18:48:02 +0000 (20:48 +0200)]
treat the MYSQL_FIELD as read-only

Origin: upstream, https://code.qt.io/cgit/qt/qtbase.git/commit/?id=549ee216fd5bf2b3
Last-Update: 2021-11-13

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.

Gbp-Pq: Name mysql_field_readonly.diff

19 months agofix recursion crash when calling setStyleSheet with qproperty-styleSheet
Debian Qt/KDE Maintainers [Sun, 28 Apr 2024 18:48:02 +0000 (20:48 +0200)]
fix recursion crash when calling setStyleSheet with qproperty-styleSheet

Origin: upstream, https://code.qt.io/cgit/qt/qtbase.git/commit/?id=e9cdcc7cb314586a
Last-Update: 2021-11-13

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.

Gbp-Pq: Name fix_recursion_crash.diff

19 months agoQPushButton/fusion style: don't ignore QIcon::On icon
Debian Qt/KDE Maintainers [Sun, 28 Apr 2024 18:48:02 +0000 (20:48 +0200)]
QPushButton/fusion style: don't ignore QIcon::On icon

Origin: upstream, https://code.qt.io/cgit/qt/qtbase.git/commit/?id=e9ccdf4d84157173
Last-Update: 2021-08-10

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.

Gbp-Pq: Name fusion_checkable_qpushbutton.diff

19 months agoadjust QMimeDatabase implementation
Debian Qt/KDE Maintainers [Sun, 28 Apr 2024 18:48:02 +0000 (20:48 +0200)]
adjust QMimeDatabase implementation

Origin: upstream, https://code.qt.io/cgit/qt/qtbase.git/commit/?id=0cbbba2aa5b47224
Last-Update: 2021-06-12

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.

Gbp-Pq: Name mime_globs.diff

19 months agoqtbase-opensource-src (5.15.8+dfsg-11+deb12u2) bookworm; urgency=medium
Thorsten Alteholz [Sun, 28 Apr 2024 18:48:02 +0000 (20:48 +0200)]
qtbase-opensource-src (5.15.8+dfsg-11+deb12u2) bookworm; urgency=medium

  * Non-maintainer upload by the LTS Team.
  * CVE-2024-25580 (Closes: #1064053)
    fix buffer overflow due to crafted KTX image file
  * CVE-2023-51714 (Closes: #1060694)
    fix incorrect HPack integer overflow check.

[dgit import unpatched qtbase-opensource-src 5.15.8+dfsg-11+deb12u2]

19 months agoImport qtbase-opensource-src_5.15.8+dfsg-11+deb12u2.debian.tar.xz
Thorsten Alteholz [Sun, 28 Apr 2024 18:48:02 +0000 (20:48 +0200)]
Import qtbase-opensource-src_5.15.8+dfsg-11+deb12u2.debian.tar.xz

[dgit import tarball qtbase-opensource-src 5.15.8+dfsg-11+deb12u2 qtbase-opensource-src_5.15.8+dfsg-11+deb12u2.debian.tar.xz]

2 years agoImport qtbase-opensource-src_5.15.8+dfsg.orig.tar.xz
Dmitry Shachnev [Wed, 4 Jan 2023 18:52:00 +0000 (22:52 +0400)]
Import qtbase-opensource-src_5.15.8+dfsg.orig.tar.xz

[dgit import orig qtbase-opensource-src_5.15.8+dfsg.orig.tar.xz]