Upstream URL: https://svn.boost.org/trac/boost/ticket/6701 Check that request size doesn't overflow. Index: boost/pool/pool.hpp =================================================================== --- boost/pool/pool.hpp.orig +++ boost/pool/pool.hpp @@ -10,6 +10,8 @@ #define BOOST_POOL_HPP #include // for workarounds +// std::numeric_limits +#include // std::less, std::less_equal, std::greater #include @@ -806,6 +808,9 @@ void * pool::ordered_mall if (n > max_chunks()) return 0; + if (requested_size && (n > (std::numeric_limits::max)() / requested_size)) + return 0; + const size_type partition_size = alloc_size(); const size_type total_req_size = n * requested_size; const size_type num_chunks = total_req_size / partition_size + @@ -988,6 +993,8 @@ public: { if(max_alloc_size && (n > max_alloc_size)) return 0; + if(chunk_size && (n > (std::numeric_limits::max)() / chunk_size)) + return 0; void* ret = (user_allocator::malloc)(chunk_size * n); used_list.insert(ret); return ret;