qt6-bb10/tests/auto/corelib/kernel
Fabian Kosmale 7a415a051a Avoid accessing deleted binding data in grouped updates
This fixes a use-after-free in QPropertyDelayedNotifications::notify.

Before this patch, evaluateBindings or a notify from a property index
might have caused the originalBindingData to become reallocated.
However, at that point, we've already restored the original bindingData
in evaluateBindings, so we won't track updates, and thus won't adjust
originalBindingStatus, which will then point to already freed data.

To remedy this, we no longer do the notification with data fetched from
originalBindingData, but instead use the information we have in the
proxyData.
We also need to enure that referenced bindings do not get deleted; for
that we keep the PendingBindingObserverList alive for the whole duration
of the endPropertyUpdateGroup.

As we now have the PendingBindingObserverList, we use it for the
notification logic, and only notify change handlers in
QPropertyDelayedNotifications::notify. That will allow a follow-up
cleanup of QPropertyObserverPointer::notify, and aligns the logic for
grouped updates with the logic for "nornal", non-grouped updates.

Amends f1b1773d0a.

Task-number: QTBUG-110899
Pick-to: 6.5 6.4 6.2
Change-Id: Iae826e620d9614b7df39d86d8a28c48c8a5c4881
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2023-02-08 16:54:26 +01:00
..
qapplicationstatic Change the license of all CMakeLists.txt and *.cmake files to BSD 2022-08-23 23:58:42 +02:00
qcoreapplication Port from container::count() and length() to size() - V5 2022-11-03 14:59:24 +01:00
qdeadlinetimer Remove preprocessor conditionals for chrono include 2022-09-16 08:09:05 +02:00
qelapsedtimer Change the license of all CMakeLists.txt and *.cmake files to BSD 2022-08-23 23:58:42 +02:00
qeventdispatcher Port from container.count()/length() to size() 2022-10-04 07:40:08 +02:00
qeventloop Port from container::count() and length() to size() - V5 2022-11-03 14:59:24 +01:00
qjnienvironment CMake: Remove direct qt_android_generate_deployment_settings call 2022-12-15 20:23:28 +01:00
qjniobject CMake: Remove direct qt_android_generate_deployment_settings call 2022-12-15 20:23:28 +01:00
qjnitypes JNI: add generic support for array-types 2022-10-10 20:19:30 +02:00
qmath Change the license of all CMakeLists.txt and *.cmake files to BSD 2022-08-23 23:58:42 +02:00
qmetacontainer Change the license of all CMakeLists.txt and *.cmake files to BSD 2022-08-23 23:58:42 +02:00
qmetaenum Change the license of all CMakeLists.txt and *.cmake files to BSD 2022-08-23 23:58:42 +02:00
qmetamethod Change the license of all CMakeLists.txt and *.cmake files to BSD 2022-08-23 23:58:42 +02:00
qmetaobject Port from container::count() and length() to size() - V5 2022-11-03 14:59:24 +01:00
qmetaobjectbuilder Port from container::count() and length() to size() - V5 2022-11-03 14:59:24 +01:00
qmetaproperty Change the license of all CMakeLists.txt and *.cmake files to BSD 2022-08-23 23:58:42 +02:00
qmetatype QMetaType: fix value-initialization in a corner case 2022-12-30 01:51:08 +01:00
qmimedata Port from container.count()/length() to size() 2022-10-04 07:40:08 +02:00
qobject Port from container.count()/length() to size() 2022-10-04 07:40:08 +02:00
qpermission Q{Contacts,Calendar}Permission: bool readWrite → enum AccessMode 2023-02-02 14:34:02 +01:00
qpointer Compile guard tests in corelib/kernel that need threading support 2022-09-11 19:36:49 +02:00
qproperty Avoid accessing deleted binding data in grouped updates 2023-02-08 16:54:26 +01:00
qsignalblocker Change the license of all CMakeLists.txt and *.cmake files to BSD 2022-08-23 23:58:42 +02:00
qsignalmapper Change the license of all CMakeLists.txt and *.cmake files to BSD 2022-08-23 23:58:42 +02:00
qsocketnotifier Port from container::count() and length() to size() - V5 2022-11-03 14:59:24 +01:00
qtimer Port from container::count() and length() to size() - V5 2022-11-03 14:59:24 +01:00
qtranslator Compile guard tests in corelib/kernel that need threading support 2022-09-11 19:36:49 +02:00
qvariant Adapt corelib to use QTimeZone in place of Qt::TimeSpec 2022-12-09 16:16:48 +01:00
qwineventnotifier Change the license of all CMakeLists.txt and *.cmake files to BSD 2022-08-23 23:58:42 +02:00
qwinregistrykey QWinRegistryKey: Fix how we handle the default value, take 2 2022-10-28 09:27:13 +00:00
CMakeLists.txt IPC: Move QSharedMemory and QSystemSemaphore from kernel/ to ipc/ 2023-01-22 13:01:53 -03:00