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
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