aboutsummaryrefslogtreecommitdiff
path: root/contrib/epee/src/byte_slice.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/epee/src/byte_slice.cpp')
-rw-r--r--contrib/epee/src/byte_slice.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/contrib/epee/src/byte_slice.cpp b/contrib/epee/src/byte_slice.cpp
index 72aa39768..47d440dff 100644
--- a/contrib/epee/src/byte_slice.cpp
+++ b/contrib/epee/src/byte_slice.cpp
@@ -152,7 +152,11 @@ namespace epee
{
std::size_t space_needed = 0;
for (const auto& source : sources)
+ {
+ if (std::numeric_limits<std::size_t>::max() - space_needed < source.size())
+ throw std::bad_alloc{};
space_needed += source.size();
+ }
if (space_needed)
{
@@ -162,9 +166,9 @@ namespace epee
for (const auto& source : sources)
{
+ assert(source.size() <= out.size()); // see check above
std::memcpy(out.data(), source.data(), source.size());
- if (out.remove_prefix(source.size()) < source.size())
- throw std::bad_alloc{}; // size_t overflow on space_needed
+ out.remove_prefix(source.size());
}
storage_ = std::move(storage);
}