Opened 7 years ago

Closed 7 years ago

#11412 closed Bugs (fixed)

reserve() : null pointer passed to memmove

Reported by: Alexandre Hamez <alexandre.hamez@…> Owned by: Ion Gaztañaga
Milestone: To Be Determined Component: container
Version: Boost 1.58.0 Severity: Problem
Keywords: Cc:

Description

The following error is reported

boost/container/detail/copy_move_algo.hpp:199:4: runtime error: null pointer passed as argument 2, which is declared to never be null

when compiling the following example with GCC 5 with the -fsanitize=undefined option

#include <boost/container/flat_set.hpp>

int main ()
{
  boost::container::flat_set<unsigned int> fs;
  fs.reserve(10);
  return 0;
}

Indeed, when putting a breakpoint at the reported line, the f argument is null.

std::memmove((iterator_to_raw_pointer)(r), (iterator_to_raw_pointer)(f), sizeof(value_type)*n);

However, valgrind does not report anything and calling capacity() reports the correct size.

Change History (1)

comment:1 by Ion Gaztañaga, 7 years ago

Resolution: fixed
Status: newclosed

Thanks for the report fixed in:

[develop a7f60c1] Fix for Trac #11412 ("reserve() : null pointer passed to memmove")

https://github.com/boostorg/container/commit/a7f60c1e8c02d2590d01474cde9be69c9114db28

Note: See TracTickets for help on using tickets.