Fix hidl_vec's constructor with initializer_list doesn't cast size properly.
Test: hidl_test
Test: libhidl_test
Change-Id: I0c155094555ecf3f6f1ea28b612b26b05a85f7ef
diff --git a/base/include/hidl/HidlSupport.h b/base/include/hidl/HidlSupport.h
index 24e8e9d..844ef40 100644
--- a/base/include/hidl/HidlSupport.h
+++ b/base/include/hidl/HidlSupport.h
@@ -271,8 +271,11 @@
}
hidl_vec(const std::initializer_list<T> list)
- : mSize(list.size()),
- mOwnsBuffer(true) {
+ : mOwnsBuffer(true) {
+ if (list.size() > UINT32_MAX) {
+ logAlwaysFatal("hidl_vec can't hold more than 2^32 elements.");
+ }
+ mSize = static_cast<uint32_t>(list.size());
mBuffer = new T[mSize];
size_t idx = 0;