[Boost-bugs] [Boost C++ Libraries] #12156: AddressSanitizer reports stack-buffer-overflow for error_with_option_name::substitute_placeholders

Subject: [Boost-bugs] [Boost C++ Libraries] #12156: AddressSanitizer reports stack-buffer-overflow for error_with_option_name::substitute_placeholders
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2016-04-26 13:37:10


#12156: AddressSanitizer reports stack-buffer-overflow for
error_with_option_name::substitute_placeholders
-----------------------------------------+-----------------------------
 Reporter: Dan Berger <danielberger@…> | Owner: vladimir_prus
     Type: Bugs | Status: new
Milestone: To Be Determined | Component: program_options
  Version: Boost 1.61.0 | Severity: Problem
 Keywords: |
-----------------------------------------+-----------------------------
 When `boost::program_options::parse_command_line(...)` throws for an
 unrecognized option it triggers !AddressSanitizer (under gcc 5.3.0, boost
 1.60):
 {{{
 ERROR: AddressSanitizer: stack-buffer-overflow on address 0x7fffe6ce7070
 at pc 0x0000007406cd bp 0x7fffe6ce6fe0 sp 0x7fffe6ce6fd8
 READ of size 8 at 0x7fffe6ce7070 thread T0
     #0 0x7406cc in std::_Head_base<0ul, std::__cxx11::basic_string<char,
 std::char_traits<char>, std::allocator<char> >&&,
 false>::_M_head(std::_Head_base<0ul, std::__cxx11::basic_string<char,
 std::char_traits<char>, std::allocator<char> >&&, false>&)
 /frc/toolchain6/include/c++/5.3.0/tuple:142
     #1 0x7406cc in _M_create_node
 /frc/toolchain6/include/c++/5.3.0/tuple:347
     #2 0x7403fd in
 std::_Rb_tree_iterator<std::pair<std::__cxx11::basic_string<char,
 std::char_traits<char>, std::allocator<char> > const,
 std::__cxx11::basic_string<char, std::char_traits<char>,
 std::allocator<char> > > > std::_Rb_tree<std::__cxx11::basic_string<char,
 std::char_traits<char>, std::allocator<char> >,
 std::pair<std::__cxx11::basic_string<char, std::char_traits<char>,
 std::allocator<char> > const, std::__cxx11::basic_string<char,
 std::char_traits<char>, std::allocator<char> > >,
 std::_Select1st<std::pair<std::__cxx11::basic_string<char,
 std::char_traits<char>, std::allocator<char> > const,
 std::__cxx11::basic_string<char, std::char_traits<char>,
 std::allocator<char> > > >, std::less<std::__cxx11::basic_string<char,
 std::char_traits<char>, std::allocator<char> > >,
 std::allocator<std::pair<std::__cxx11::basic_string<char,
 std::char_traits<char>, std::allocator<char> > const,
 std::__cxx11::basic_string<char, std::char_traits<char>,
 std::allocator<char> > > >
>::_M_emplace_hint_unique<std::piecewise_construct_t const&,
 std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>,
 std::allocator<char> >&&>, std::tuple<>
>(std::_Rb_tree_const_iterator<std::pair<std::__cxx11::basic_string<char,
 std::char_traits<char>, std::allocator<char> > const,
 std::__cxx11::basic_string<char, std::char_traits<char>,
 std::allocator<char> > > >, std::piecewise_construct_t const&,
 std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>,
 std::allocator<char> >&&>&&, std::tuple<>&&)
 /frc/toolchain6/include/c++/5.3.0/bits/stl_tree.h:2170
     #3 0xd5eff8 in
 boost::program_options::error_with_option_name::substitute_placeholders(std::__cxx11::basic_string<char,
 std::char_traits<char>, std::allocator<char> > const&) const
 (/home/joe/myapp_workspace/myapp/myapp-debug+0xd5eff8)
     #4 0xd5c0dd in boost::program_options::error_with_option_name::what()
 const (/home/joe/myapp_workspace/myapp/myapp-debug+0xd5c0dd)
     #5 0x58addf in main /home/joe/myapp_workspace/myapp/main.cpp:62
     #6 0x7fd7e056176c in __libc_start_main (/lib/x86_64-linux-
 gnu/libc.so.6+0x2176c)
     #7 0x436aa0 (/home/joe/myapp_workspace/myapp/myapp-debug+0x436aa0)
 }}}

-- 
Ticket URL: <https://svn.boost.org/trac/boost/ticket/12156>
Boost C++ Libraries <http://www.boost.org/>
Boost provides free peer-reviewed portable C++ source libraries.

This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:20 UTC