| Summary: | Compilation for ARM fails with Qt 5.7.0 because of narrowing conversion: | ||
|---|---|---|---|
| Product: | [Frameworks and Libraries] qca | Reporter: | Rolf Eike Beer <kde> |
| Component: | general | Assignee: | Ivan Romanov <drizt72> |
| Status: | RESOLVED FIXED | ||
| Severity: | normal | CC: | bradh, justin |
| Priority: | NOR | ||
| Version First Reported In: | 2.1.1 | ||
| Target Milestone: | --- | ||
| Platform: | Other | ||
| OS: | Linux | ||
| Latest Commit: | http://commits.kde.org/qca/601fd3a05141c614ae48a3ddac44194d669eaae1 | Version Fixed/Implemented In: | |
| Sentry Crash Report: | |||
Git commit 601fd3a05141c614ae48a3ddac44194d669eaae1 by Rolf Eike Beer.
Committed on 27/06/2016 at 16:24.
Pushed by dakon into branch 'master'.
fix base64 decoding on ARM
This code was broken on ARM and other architectures where "char" is unsigned by
default.
First, it breaks with newer compilers with errors like:
.../src/qca_textfilter.cpp:314:2: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
Second, if the compiler would just allow this conversion then the unsigned char
would hold 255, which would not be sign extended when cast to an int later, so
all the checks "< 0" will never trigger, and so invalid input characters cannot
be detected.
REVIEW:128295
M +1 -1 src/qca_textfilter.cpp
http://commits.kde.org/qca/601fd3a05141c614ae48a3ddac44194d669eaae1
|
Using gcc 5.4.0, worked fine with 5.6.1. [ 35%] Building CXX object src/CMakeFiles/qca-qt5.dir/botantools/botan/exceptn.cpp.o cd /tmp/e2/build/build/src && /opt/emlix/test/bin/arm-unknown-linux-gnueabi-g++ --sysroot=/opt/emlix/test/sysroot -DBOTAN_EXT_ALLOC_MMAP -DBOTAN_EXT_MUTEX_QT -DBOTAN_KARAT_MUL_THRESHOLD=12 -DBOTAN_KARAT_SQR_THRESHOLD=12 -DBOTAN_MINIMAL_BIGINT -DBOTAN_MP_WORD_BITS=32 -DBOTAN_NO_CONF_H -DBOTAN_NO_INIT_H -DBOTAN_TOOLS_ONLY -DBOTAN_TYPES_QT -DQCA_MAKEDLL -DQCA_PLUGIN_PATH=\"/opt/emlix/test/sysroot/usr/lib/qt5/plugins\" -DQCA_SYSTEMSTORE_PATH=\"/tmp/e2/build/qca/certs/rootcerts.pem\" -DQT_CORE_LIB -DQT_DISABLE_DEPRECATED_BEFORE=0 -DQT_NO_DEBUG -D_BSD_SOURCE -I/tmp/e2/build/build/src -I/tmp/e2/build/qca/src -I/tmp/e2/build/qca/include/QtCrypto -I/tmp/e2/build/build -I/tmp/e2/build/qca/src/support -I/tmp/e2/build/qca/src/botantools/botan -isystem /opt/emlix/test/sysroot/usr/include/qt5 -isystem /opt/emlix/test/sysroot/usr/include/qt5/QtCore -isystem /opt/emlix/test/mkspecs/emlix/linux-arm-g++ -I/opt/emlix/test/sysroot/usr/include/qt5/QtNetwork -Wcast-align -Wnon-virtual-dtor -Wno-long-long -ansi -Wundef -Wchar-subscripts -Wall -W -Wpointer-arith -Wwrite-strings -Wformat-security -fno-check-new -fno-common -fPIC -fPIC -std=gnu++11 -o CMakeFiles/qca-qt5.dir/botantools/botan/exceptn.cpp.o -c /tmp/e2/build/qca/src/botantools/botan/exceptn.cpp In file included from /opt/emlix/test/sysroot/usr/include/c++/5.4.0/arm-unknown-linux-gnueabi/bits/os_defines.h:39:0, from /opt/emlix/test/sysroot/usr/include/c++/5.4.0/arm-unknown-linux-gnueabi/bits/c++config.h:482, from /opt/emlix/test/sysroot/usr/include/c++/5.4.0/cstddef:44, from /opt/emlix/test/sysroot/usr/include/qt5/QtCore/qglobal.h:45, from /opt/emlix/test/sysroot/usr/include/qt5/QtCore/QtGlobal:1, from /tmp/e2/build/qca/src/botantools/botan/botan/types.h:38, from /tmp/e2/build/qca/src/botantools/botan/botan/exceptn.h:37, from /tmp/e2/build/qca/src/botantools/botan/exceptn.cpp:34: /opt/emlix/test/sysroot/usr/include/features.h:148:3: warning: #warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE" [-Wcpp] # warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE" ^ /tmp/e2/build/qca/src/qca_textfilter.cpp: In function 'QByteArray QCA::b64decode(const QByteArray&, bool*)': /tmp/e2/build/qca/src/qca_textfilter.cpp:314:2: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing] }; ^ Reproducible: Always