Add some "fuzzing" tests for deserialization, and fixes for all of the
problems discovered.
Change-Id: I050344f6c6d0a19b7f3304d23729b4ca71c05042
diff --git a/authorization_set.cpp b/authorization_set.cpp
index 9d26968..f6a38ee 100644
--- a/authorization_set.cpp
+++ b/authorization_set.cpp
@@ -344,10 +344,12 @@
}
bool AuthorizationSet::DeserializeIndirectData(const uint8_t** buf_ptr, const uint8_t* end) {
- if (!copy_size_and_data_from_buf(buf_ptr, end, &indirect_data_size_, &indirect_data_)) {
+ UniquePtr<uint8_t[]> indirect_buf;
+ if (!copy_size_and_data_from_buf(buf_ptr, end, &indirect_data_size_, &indirect_buf)) {
set_invalid(MALFORMED_DATA);
return false;
}
+ indirect_data_ = indirect_buf.release();
return true;
}