epee: fix invalid memory write reading an array entry

Reported by Lilith Wyatt at Talos.

Since this is not needed in normal operation, I just let this
error out.
This commit is contained in:
moneromooo-monero 2018-08-02 16:17:22 +00:00
parent f61cd54465
commit 58ee1f2bde
No known key found for this signature in database
GPG Key ID: 686F07454D6CEFC3

View File

@ -59,6 +59,7 @@ namespace epee
storage_entry load_storage_entry(); storage_entry load_storage_entry();
void read(section& sec); void read(section& sec);
void read(std::string& str); void read(std::string& str);
void read(array_entry &ae);
private: private:
struct recursuion_limitation_guard struct recursuion_limitation_guard
{ {
@ -114,6 +115,7 @@ namespace epee
void throwable_buffer_reader::read(t_pod_type& pod_val) void throwable_buffer_reader::read(t_pod_type& pod_val)
{ {
RECURSION_LIMITATION(); RECURSION_LIMITATION();
static_assert(std::is_pod<t_pod_type>::value, "POD type expected");
read(&pod_val, sizeof(pod_val)); read(&pod_val, sizeof(pod_val));
} }
@ -277,5 +279,11 @@ namespace epee
m_ptr+=len; m_ptr+=len;
m_count -= len; m_count -= len;
} }
inline
void throwable_buffer_reader::read(array_entry &ae)
{
RECURSION_LIMITATION();
CHECK_AND_ASSERT_THROW_MES(false, "Reading array entry is not supported");
}
} }
} }