SHA256
8
0
forked from pool/boost
Files
boost/boost-pool_check_overflow.patch
Arvin Schnell 2f51f4d7c9 Accepting request 1272235 from home:aschnell:boost2
- update to 1.88.0
  * new libraries:
    + Hash2 (extensible hashing framework)
    + MQTT5 (MQTT5 client library)
  * for details on all changes see,
    https://www.boost.org/users/history/version_1_88_0.html
- boost-smart-ptr.patch: included upstream
- boost-missing-BOOST_MOVE_STD_NS_BEG.patch: included upstream
- boost-missing-BOOST_MOVE_STD_NS_BEG-again.patch: included upstream

OBS-URL: https://build.opensuse.org/request/show/1272235
OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/boost?expand=0&rev=349
2025-04-24 11:55:44 +00:00

37 lines
1.1 KiB
Diff

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 <boost/config.hpp> // for workarounds
+// std::numeric_limits
+#include <boost/limits.hpp>
// std::less, std::less_equal, std::greater
#include <functional>
@@ -806,6 +808,9 @@ void * pool<UserAllocator>::ordered_mall
if (n > max_chunks())
return 0;
+ if (requested_size && (n > (std::numeric_limits<size_type>::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<size_type>::max)() / chunk_size))
+ return 0;
void* ret = (user_allocator::malloc)(chunk_size * n);
used_list.insert(ret);
return ret;