Details
-
Bug
-
Resolution: Done
-
P2: Important
-
5.15.2
-
None
-
Ubuntu 20.04 LTS 64 bit
clang 10.0.0
-
df8fbcf382b086e96082a8eb3622c60273e94c4d (qt/qtbase/dev) faaf8f5c0a73a27a159f00027ebeba5d486be6a9 (qt/qtbase/6.0) 0b4adb5b63221d423e4bdd6d07b3460d3d5cc6fe (qt/qtbase/5.15)
Description
- Apply 323361 to qtbase.
With this, undefined behavior causes a crash instead of just being logged. - Configure Qt with:
-platform linux-clang -sanitize undefined
For the sake of completeness, all switches I used are:
-platform linux-clang -opensource -confirm-license -nomake examples -nomake tests -prefix $PWD/qtbase -release -static -sanitize fuzzer-no-link -sanitize undefined -no-gc-binaries
- Build Qt.
Building will fail with a signed integer overflow:make[3]: Entering directory '/home/qtrob/dev/clang-10.0.0/qt-5.15.2-base_svg-fuzz-ubsan/qtbase/src/network' /home/qtrob/dev/clang-10.0.0/qt-5.15.2-base_svg-fuzz-ubsan/qtbase/bin/moc -DQT_NO_LINKED_LIST -DQT_NO_JAVA_STYLE_ITERATORS -DQT_NO_USING_NAMESPACE -DQT_NO_FOREACH -DQT_USE_SYSTEM_PROXIES -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_BUILD_NETWORK_LIB -DQT_BUILDING_QT -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DQT_DEPRECATED_WARNINGS -DQT_DISABLE_DEPRECATED_BEFORE=0x050000 -DQT_DEPRECATED_WARNINGS_SINCE=0x060000 -DQT_NO_EXCEPTIONS -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -DQT_NO_DEBUG -DQT_CORE_LIB --include /home/qtrob/dev/clang-10.0.0/qt-5.15.2-base_svg-fuzz-ubsan/qtbase/src/network/.moc/moc_predefs.h -I/home/qtrob/dev/src/qt-5.15.2-base_svg/qtbase/mkspecs/linux-clang -I/home/qtrob/dev/src/qt-5.15.2-base_svg/qtbase/src/network -I/home/qtrob/dev/src/qt-5.15.2-base_svg/qtbase/src/network/kernel -I/home/qtrob/dev/clang-10.0.0/qt-5.15.2-base_svg-fuzz-ubsan/qtbase/include -I/home/qtrob/dev/clang-10.0.0/qt-5.15.2-base_svg-fuzz-ubsan/qtbase/include/QtNetwork -I/home/qtrob/dev/clang-10.0.0/qt-5.15.2-base_svg-fuzz-ubsan/qtbase/include/QtNetwork/5.15.2 -I/home/qtrob/dev/clang-10.0.0/qt-5.15.2-base_svg-fuzz-ubsan/qtbase/include/QtNetwork/5.15.2/QtNetwork -I/home/qtrob/dev/clang-10.0.0/qt-5.15.2-base_svg-fuzz-ubsan/qtbase/include/QtCore/5.15.2 -I/home/qtrob/dev/clang-10.0.0/qt-5.15.2-base_svg-fuzz-ubsan/qtbase/include/QtCore/5.15.2/QtCore -I/home/qtrob/dev/clang-10.0.0/qt-5.15.2-base_svg-fuzz-ubsan/qtbase/include/QtCore -I. -I/usr/include/c++/9 -I/usr/include/x86_64-linux-gnu/c++/9 -I/usr/include/c++/9/backward -I/usr/lib/llvm-10/lib/clang/10.0.0/include -I/usr/include/x86_64-linux-gnu -I/usr/include /home/qtrob/dev/src/qt-5.15.2-base_svg/qtbase/src/network/access/qspdyprotocolhandler_p.h -o .moc/moc_qspdyprotocolhandler_p.cpp /home/qtrob/dev/src/qt-5.15.2-base_svg/qtbase/src/tools/moc/preprocessor.cpp:889:22: runtime error: signed integer overflow: 2147483647 * 2 cannot be represented in type 'int' SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /home/qtrob/dev/src/qt-5.15.2-base_svg/qtbase/src/tools/moc/preprocessor.cpp:889:22 in make[3]: *** [Makefile:5751: .moc/moc_qspdyprotocolhandler_p.cpp] Error 1
Attachments
For Gerrit Dashboard: QTBUG-88825 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
323387,5 | Avoid signed overflow in moc | dev | qt/qtbase | Status: MERGED | +2 | 0 |
325179,2 | Avoid signed overflow in moc | 5.15 | qt/qtbase | Status: MERGED | +2 | 0 |
325180,2 | Avoid signed overflow in moc | 6.0 | qt/qtbase | Status: MERGED | +2 | 0 |