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