diff options
author | Ravneet <rdhanjal@google.com> | 2023-06-02 22:24:10 +0000 |
---|---|---|
committer | Ravneet Dhanjal <rdhanjal@google.com> | 2023-06-05 22:05:14 +0000 |
commit | 6316a79500a303cd642efc79ef9e134f3b3cb4d7 (patch) | |
tree | 0213509366058b560461bca5a88bfd3fb738ba9c | |
parent | 098a0ef0e9e9ed875a7afe07ee25b19b5011a8af (diff) | |
download | camera-6316a79500a303cd642efc79ef9e134f3b3cb4d7.tar.gz |
Validate camera metadata sizeandroid14-dev
- Check that the metadata expected size
matches the reported size
Test: CTS test
Bug: 274445725
Change-Id: I0e2dc8e4a87947518d0bc1bdeb057c9eff31bcba
-rw-r--r-- | common/hal/aidl_service/aidl_utils.cc | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/common/hal/aidl_service/aidl_utils.cc b/common/hal/aidl_service/aidl_utils.cc index 6d5f201..332d1a1 100644 --- a/common/hal/aidl_service/aidl_utils.cc +++ b/common/hal/aidl_service/aidl_utils.cc @@ -728,6 +728,15 @@ status_t ConvertToHalMetadata( metadata = reinterpret_cast<const camera_metadata_t*>(request_settings.data()); + + size_t metadata_size = get_camera_metadata_size(metadata); + if (metadata_size != request_settings.size()) { + ALOGE( + "%s: Mismatch between camera metadata size (%zu) and request " + "setting size (%zu)", + __FUNCTION__, metadata_size, request_settings.size()); + return BAD_VALUE; + } } } else { // Read the settings from request metadata queue. @@ -751,6 +760,15 @@ status_t ConvertToHalMetadata( metadata = reinterpret_cast<const camera_metadata_t*>( metadata_queue_settings.data()); + + size_t metadata_size = get_camera_metadata_size(metadata); + if (metadata_size != message_queue_setting_size) { + ALOGE( + "%s: Mismatch between camera metadata size (%zu) and message " + "queue setting size (%u)", + __FUNCTION__, metadata_size, message_queue_setting_size); + return BAD_VALUE; + } } if (metadata == nullptr) { |