aboutsummaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
authorLee *!* Clagett <code@leeclagett.com>2024-11-19 18:51:52 -0500
committerLee *!* Clagett <code@leeclagett.com>2024-11-21 21:16:22 -0500
commit74c313420c1d22c5c8eecb8430fd5fe7a89143d7 (patch)
tree68768ed44162f9a1be68d8534a54b9a9d4ea5a6d /contrib
parent58a1d54a4f90a235616ede3f8ebae2b8dca41589 (diff)
downloadmonzero-core-74c313420c1d22c5c8eecb8430fd5fe7a89143d7.tar.gz
monzero-core-74c313420c1d22c5c8eecb8430fd5fe7a89143d7.tar.xz
monzero-core-74c313420c1d22c5c8eecb8430fd5fe7a89143d7.zip
Fix memcpy in byte_slice constructor
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);
}