diff options
author | luigi1111 <luigi1111w@gmail.com> | 2024-01-18 17:59:47 -0500 |
---|---|---|
committer | luigi1111 <luigi1111w@gmail.com> | 2024-01-18 17:59:47 -0500 |
commit | 6d00cf2c2d7a72d6f69fa9e2ee797eaafc2380a3 (patch) | |
tree | b87dc2fb44dc68e4df93b379fdecb6c67b543e11 | |
parent | Merge pull request #9060 (diff) | |
parent | Add compile-time check for input iterators in ::wire array writing (diff) | |
download | monero-6d00cf2c2d7a72d6f69fa9e2ee797eaafc2380a3.tar.xz |
Merge pull request #9061
085fdea Add compile-time check for input iterators in ::wire array writing (Lee *!* Clagett)
-rw-r--r-- | contrib/epee/include/serialization/wire/write.h | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/contrib/epee/include/serialization/wire/write.h b/contrib/epee/include/serialization/wire/write.h index c18f7dbcc..c2359918c 100644 --- a/contrib/epee/include/serialization/wire/write.h +++ b/contrib/epee/include/serialization/wire/write.h @@ -30,6 +30,7 @@ #include <boost/utility/string_ref.hpp> #include <boost/range/size.hpp> #include <cstdint> +#include <iterator> #include <system_error> #include <type_traits> @@ -188,7 +189,13 @@ namespace wire_write template<typename T> inline std::size_t array_size(std::true_type, const T& source) - { return boost::size(source); } + { + static_assert( + !std::is_same<typename std::iterator_traits<typename T::const_iterator>::iterator_category, std::input_iterator_tag>{}, + "Input iterators must use json (or similar) derived classes directly" + ); + return boost::size(source); + } template<typename T> inline constexpr std::size_t array_size(std::false_type, const T&) noexcept |