id summary reporter owner description type status milestone component version severity resolution keywords cc 13223 Undefined behavior inside assign_bits while importing data to cpp_int Dennis John Maddock "Trying to import bits from unsigned char array results in undefined behavior as reported by Clang. Minimal example: {{{#!cpp #include #include #include using mp_int_t = boost::multiprecision::int128_t; using source_t = std::vector; int main() { source_t src(16, 0); mp_int_t result; import_bits(result, src.begin(), src.end(), 0, false); return 0; } }}} Compile command: {{{#!bash clang++ main.cpp \ -g -O1 -fsanitize=undefined -fno-omit-frame-pointer \ -fno-optimize-sibling-calls -std=c++11 -o main }}} Runtime output: {{{ boost/multiprecision/cpp_int/import_export.hpp:64:21: runtime error: shift exponent 128 is too large for 8-bit type 'unsigned char' }}} Environment information: - Ubuntu 16.04 LTS 64bit - Tested with Clang 3.8.0 and Clang 5.0.0" Bugs closed To Be Determined multiprecision Boost 1.64.0 Problem fixed