[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