Go to file
Marc Mutz 47abdabe2c QHttp1Configuration: fix UB (inactive union member access)
Any QHttp1Configuration object created has 'ShortData data' as active
member. std::exchange()ing or qt_ptr_swap()ping 'Private *d', then, is
accessing the inactive member of the union, and that's UB.

Fix by swapping and copying the whole union, as opposed to any of its
members, and, in the move constructor, activating Private *d.

This is now safe, as assigning to 'd' ends 'data's life-time and
starts 'd's. Even if we assign a well-formed object to a moved-from
object, we either swap or copy the whole union, so SEP. For
self-move-assignment in the moved-from state (Hinnant Criterion),
we're using std::swap() on the whole union, so SEP.

In addition, activating `Private *d` in moved-from objects means that
a future ~Public's use of unconditional 'delete d' won't invoke UB,
either.

Thanks to Peppe for insisting on fixing this.

Pick-to: 6.5
Change-Id: Ic1323b8416d6b17ae21768c625de1daba0944133
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2023-01-18 18:19:25 +00:00
.github/workflows Repair github action workflow 2021-11-10 18:57:33 +01:00
bin Use the Windows path separator in a Batch file 2023-01-09 14:39:27 +01:00
cmake CMake: make qt_config_compile_test verbosely indicate missing deps 2023-01-18 09:21:20 -07:00
coin Revert "Revert "coin: Build qmake examples in non-qtbase repos"" 2023-01-16 18:18:28 +00:00
config.tests Change the license of all CMakeLists.txt and *.cmake files to BSD 2022-08-23 23:58:42 +02:00
dist Add Qt 6.0.0 changes file 2020-11-16 10:02:08 +02:00
doc Doc: Add margins to all anchors in a translated page 2022-12-12 14:14:22 +00:00
examples Fix Style Plugin Example, and add some CMake Docs 2023-01-18 14:47:12 +01:00
lib Purge all fonts 2015-08-18 19:59:14 +00:00
libexec Use SPDX license identifiers 2022-05-16 16:37:38 +02:00
LICENSES Add license text file for Creative Commons Zero (CC0) 1.0 2022-10-19 12:06:09 +02:00
mkspecs permissions: Take PlistBuddy exit code into account when reading Info.plist 2023-01-17 16:53:57 +01:00
qmake Make qmake and qtpaths report Qt version baked into the binaries 2023-01-18 13:21:05 +01:00
src QHttp1Configuration: fix UB (inactive union member access) 2023-01-18 18:19:25 +00:00
tests tests: remove PlatformInputContext::filterEvent() 2023-01-18 13:21:06 +01:00
util Remove GENERATE_METATYPES 2023-01-18 14:47:12 +01:00
.cmake.conf Enable QT_NO_AS_CONST globally 2023-01-05 15:09:49 +01:00
.gitattributes Give batch files CRLF line endings 2020-11-04 15:02:29 +00:00
.gitignore Assume qhelpgenerator in libexec instead of bin 2021-11-08 19:27:32 +01:00
.lgtm.yml Skip LGTM analysis for the bootstrap library and tools 2020-07-16 01:04:34 +02:00
.tag Update the git-archive export options 2012-09-07 15:39:31 +02:00
CMakeLists.txt Change the license of all CMakeLists.txt and *.cmake files to BSD 2022-08-23 23:58:42 +02:00
conanfile.py Conan: Do not force 'qt_host_path' usage in cross-build context 2022-06-22 18:18:42 +03:00
config_help.txt Update -redo option such that it removes CMakeCache.txt and CMakeFiles/ 2022-12-01 02:23:51 +01:00
configure Update -redo option such that it removes CMakeCache.txt and CMakeFiles/ 2022-12-01 02:23:51 +01:00
configure.bat Update -redo option such that it removes CMakeCache.txt and CMakeFiles/ 2022-12-01 02:23:51 +01:00
configure.cmake Add find package for lttng library so that it gets added to target 2023-01-13 12:43:45 +02:00
dependencies.yaml Re-add dependencies.yaml now that qt5.git wip/qt6 builds fine 2019-09-18 13:19:31 +02:00
qt_cmdline.cmake QCryptographicHash: implement OpenSSL 3.0 support 2022-09-26 17:26:37 +02:00
sync.profile Move qurltlds_p.h out of src/network, and make it a .cpp file 2022-10-01 06:24:51 +00:00