summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYuvraj Pasi <ypasi@nvidia.com>2014-04-15 19:03:26 +0530
committerYuvraj Pasi <ypasi@nvidia.com>2014-05-12 12:15:42 +0530
commitc90f4c7c5838e4dee2f550c4d581e7205e666faa (patch)
treedcba88eb3d13d02b3eab49d000f35a6dbed30e1c
parent4f53fe74051026e6635ba5bdbed4f1898cb66028 (diff)
downloadframeworks_av-c90f4c7c5838e4dee2f550c4d581e7205e666faa.zip
frameworks_av-c90f4c7c5838e4dee2f550c4d581e7205e666faa.tar.gz
frameworks_av-c90f4c7c5838e4dee2f550c4d581e7205e666faa.tar.bz2
camera: check Intent entry count before reading it
In case when find() returns empty entry, blindly reading the entry will cause segfault Change-Id: Ib5be7fd855c409ba3b45f0d43e15237367172817
-rw-r--r--services/camera/libcameraservice/api1/client2/Parameters.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/services/camera/libcameraservice/api1/client2/Parameters.cpp b/services/camera/libcameraservice/api1/client2/Parameters.cpp
index 0cceb76..6c2872a 100644
--- a/services/camera/libcameraservice/api1/client2/Parameters.cpp
+++ b/services/camera/libcameraservice/api1/client2/Parameters.cpp
@@ -1750,6 +1750,9 @@ status_t Parameters::updateRequest(CameraMetadata *request) const {
camera_metadata_entry_t intent =
request->find(ANDROID_CONTROL_CAPTURE_INTENT);
+
+ if (intent.count == 0) return BAD_VALUE;
+
if (intent.data.u8[0] == ANDROID_CONTROL_CAPTURE_INTENT_STILL_CAPTURE) {
res = request->update(ANDROID_CONTROL_AE_TARGET_FPS_RANGE,
fastInfo.bestStillCaptureFpsRange, 2);