aboutsummaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
authorluigi1111 <luigi1111w@gmail.com>2024-12-23 10:59:22 -0500
committerluigi1111 <luigi1111w@gmail.com>2024-12-23 10:59:22 -0500
commite2fcb9141fddc2e439a98456931b125dbaa1ebbf (patch)
tree198c3b99d32ffa70624ce6cf450e71c635e319c9 /contrib
parent3cbcd4fa4198ca6b318cc167379fc369c216c524 (diff)
parent74c313420c1d22c5c8eecb8430fd5fe7a89143d7 (diff)
downloadmonzero-core-e2fcb9141fddc2e439a98456931b125dbaa1ebbf.tar.gz
monzero-core-e2fcb9141fddc2e439a98456931b125dbaa1ebbf.tar.xz
monzero-core-e2fcb9141fddc2e439a98456931b125dbaa1ebbf.zip
Merge pull request #9584
74c3134 Fix memcpy in byte_slice constructor (Lee *!* Clagett)
Diffstat (limited to 'contrib')
-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);
}