diff options
| author | luigi1111 <luigi1111w@gmail.com> | 2024-12-23 10:59:22 -0500 |
|---|---|---|
| committer | luigi1111 <luigi1111w@gmail.com> | 2024-12-23 10:59:22 -0500 |
| commit | e2fcb9141fddc2e439a98456931b125dbaa1ebbf (patch) | |
| tree | 198c3b99d32ffa70624ce6cf450e71c635e319c9 /contrib | |
| parent | 3cbcd4fa4198ca6b318cc167379fc369c216c524 (diff) | |
| parent | 74c313420c1d22c5c8eecb8430fd5fe7a89143d7 (diff) | |
| download | monzero-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.cpp | 8 |
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); } |
