Heap overflow on cdm 0.3.0
Enabling LTO workarounds the issue
Hepa overflow log :
=================================================================
==9200==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x512000000480 at pc 0x55767761bfc9 bp 0x7ffe54a375a0 sp 0x7ffe54a37590
WRITE of size 8 at 0x512000000480 thread T0
#0 0x55767761bfc8 in spdlog::details::mdc_formatter<spdlog::details::null_scoped_padder>::mdc_formatter(spdlog::details::padding_info) /usr/include/spdlog/pattern_formatter-inl.h:792
#1 0x557677608dc3 in spdlog::details::full_formatter::full_formatter(spdlog::details::padding_info) /usr/include/spdlog/pattern_formatter-inl.h:833
#2 0x7f88f9dbfbba in std::__detail::_MakeUniq<spdlog::details::full_formatter>::__single_object std::make_unique<spdlog::details::full_formatter, spdlog::details::padding_info>(spdlog::details::padding_info&&) /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/unique_ptr.h:1070
#3 0x7f88f9db8897 in spdlog::pattern_formatter::pattern_formatter(spdlog::pattern_time_type, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) /usr/include/spdlog/pattern_formatter-inl.h:1044
#4 0x7f88f9dba832 in spdlog::details::registry::registry() /usr/include/spdlog/details/registry-inl.h:34
#5 0x7f88f9dbac3c in spdlog::details::registry::instance() /usr/include/spdlog/details/registry-inl.h:287
#6 0x7f88f9dbaca7 in spdlog::default_logger_raw() /usr/include/spdlog/spdlog-inl.h:112
#7 0x5576775675e7 in void spdlog::info<char [5]>(char const (&) [5]) /usr/include/spdlog/spdlog.h:253
#8 0x5576775670f5 in main /home/droman/Develop/Work/Virgo/cdm/src/heap_overflow.cpp:6
#9 0x7f88f882614d (/lib64/libc.so.6+0x2614d)
#10 0x7f88f8826208 in __libc_start_main (/lib64/libc.so.6+0x26208)
#11 0x5576771fb624 in _start (/home/droman/Develop/Work/Virgo/cdm/build/heap_overflow+0x1422624)
0x512000000480 is located 0 bytes after 320-byte region [0x512000000340,0x512000000480)
allocated by thread T0 here:
#0 0x7f88fa0fa3b8 in operator new(unsigned long) (/usr/lib/gcc/x86_64-pc-linux-gnu/14/libasan.so.8+0xfa3b8)
#1 0x7f88f9dbfb8e in std::__detail::_MakeUniq<spdlog::details::full_formatter>::__single_object std::make_unique<spdlog::details::full_formatter, spdlog::details::padding_info>(spdlog::details::padding_info&&) /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/unique_ptr.h:1070
#2 0x7f88f9db8897 in spdlog::pattern_formatter::pattern_formatter(spdlog::pattern_time_type, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) /usr/include/spdlog/pattern_formatter-inl.h:1044
#3 0x7f88f9dba832 in spdlog::details::registry::registry() /usr/include/spdlog/details/registry-inl.h:34
#4 0x7f88f9dbac3c in spdlog::details::registry::instance() /usr/include/spdlog/details/registry-inl.h:287
#5 0x7f88f9dbaca7 in spdlog::default_logger_raw() /usr/include/spdlog/spdlog-inl.h:112
#6 0x5576775675e7 in void spdlog::info<char [5]>(char const (&) [5]) /usr/include/spdlog/spdlog.h:253
#7 0x5576775670f5 in main /home/droman/Develop/Work/Virgo/cdm/src/heap_overflow.cpp:6
#8 0x7f88f882614d (/lib64/libc.so.6+0x2614d)
SUMMARY: AddressSanitizer: heap-buffer-overflow /usr/include/spdlog/pattern_formatter-inl.h:792 in spdlog::details::mdc_formatter<spdlog::details::null_scoped_padder>::mdc_formatter(spdlog::details::padding_info)
Shadow bytes around the buggy address:
0x512000000200: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x512000000280: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x512000000300: fa fa fa fa fa fa fa fa 00 00 00 00 00 00 00 00
0x512000000380: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x512000000400: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
=>0x512000000480:[fa]fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x512000000500: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x512000000580: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x512000000600: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x512000000680: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x512000000700: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
Shadow byte legend (one shadow byte represents 8 application bytes):
Addressable: 00
Partially addressable: 01 02 03 04 05 06 07
Heap left redzone: fa
Freed heap region: fd
Stack left redzone: f1
Stack mid redzone: f2
Stack right redzone: f3
Stack after return: f5
Stack use after scope: f8
Global redzone: f9
Global init order: f6
Poisoned by user: f7
Container overflow: fc
Array cookie: ac
Intra object redzone: bb
ASan internal: fe
Left alloca redzone: ca
Right alloca redzone: cb
==9200==ABORTING