[qt/qt/qtbase]: Summary of bulk changes made

KDE Git Services - Bulk Change <[email protected]>
Newsgroups gmane.comp.kde.cvs
Message-ID <[email protected]>
Git repository change summary for qt/qt/qtbase
Pushed by mirror-service into branch 'dev'.
Changed from c5fc610a093e7e6b7ce84007f475271d999b265a to da36eefeb45af6fb2093226d29683311fa9f1425
Acknowledgement was received that this change introduces only existing code that has been pushed to another public open source repository.

This change contains the following new commits:

Git commit 222e51a0b6b2349779d1dec95b9d679d96f69546 by Jarkko Koivikko on 19/08/2026 at 08:16..
QDoubleValidator: compare digit counts directly

validateWithLocale() decided whether an out-of-range input is short
enough to be Intermediate by raising ten to the wider bound's digit
count. Two things went wrong.

pow10() returns qlonglong, so a bound of 1e18 or more made the result
overflow, wrap negative, and report Invalid for every input.

The first out-of-reach value was then backed off by the last place
decimals() permits. decimals() defaults to -1, meaning the fractional
part is unconstrained, and std::pow(10, -q->dec) then yields a whole
power of ten rather than a small epsilon: for a single-digit bound the
allowance collapses from 10 to 0, so QDoubleValidator(5, 9, -1) called
"1" Invalid and a field with that range rejected the keystroke outright.

Compare the two digit counts directly instead, as suggested in review: a
value no greater than the bound cannot have more digits, and otherwise
step a power of ten up past the bound and see whether the value still
reaches it. Neither a count nor a power of ten is constructed, so
neither overflow can arise, and nothing needs to be subtracted:
validateChars() has already rejected input with more decimals than
decimals() permits, so no candidate can round up past the bound's
digits. An infinite bound needs no special case either, since no finite
value exceeds it.

Above 1e22 a double no longer pins a decimal digit count, so the
comparison there follows the representation rather than the digits
typed. Deriving the count from std::log10() or std::pow() instead shares
that limit, and errs towards rejecting input rather than admitting it.

numDigits() and pow10() had no other caller and go away with it.

Pick-to: 6.12 6.11
Fixes: QTBUG-149010
Change-Id: I1a43d716e0937763e0655b1d718743a39977d43a
Reviewed-by: Thiago Macieira <[email protected]>
https://invent.kde.org/qt/qt/qtbase/-/commit/222e51a0b6b2349779d1dec95b9d679d96f69546

Git commit da36eefeb45af6fb2093226d29683311fa9f1425 by Laszlo Agocs on 19/08/2026 at 12:18..
Fix out-of-bounds access in the libinput log handler

vsnprintf() returns the length the output would have had, so for a
libinput message of 512 bytes or more buf[n - 1] is past the end of the
buffer: an out-of-bounds stack read, and a one-byte write when that byte
happens to be a newline. libinput messages interpolate device names,
which come from USB string descriptors.

Task-number: QTBUG-149071
Pick-to: 6.12 6.11 6.8
Change-Id: Ie77552de8300360843b144fe0e43e4ea88968219
Reviewed-by: Andy Nichols <[email protected]>
https://invent.kde.org/qt/qt/qtbase/-/commit/da36eefeb45af6fb2093226d29683311fa9f1425
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.