summaryrefslogtreecommitdiff
path: root/sdm/libs/hwc2/hwc_session_services.cpp
diff options
context:
space:
mode:
authorRamkumar Radhakrishnan <ramkumar@codeaurora.org>2017-11-21 13:50:10 -0800
committerRamkumar Radhakrishnan <ramkumar@codeaurora.org>2017-11-21 14:08:19 -0800
commit6b05e5d03b69437bcd64b83c6a818429159d3440 (patch)
treef2f8476e5056360d4f1a16d02b4ab2adf99bc0c4 /sdm/libs/hwc2/hwc_session_services.cpp
parent28f871dabaab85700f02e432f4080237cad91103 (diff)
downloaddisplay-6b05e5d03b69437bcd64b83c6a818429159d3440.tar.gz
hwc2: Fix out of bound check in getDisplayAttributes()
Change-Id: I74bffe3a2ec7db339541339048f0cbb405d85de9 CRs-Fixed: 2147264
Diffstat (limited to 'sdm/libs/hwc2/hwc_session_services.cpp')
-rw-r--r--sdm/libs/hwc2/hwc_session_services.cpp28
1 files changed, 15 insertions, 13 deletions
diff --git a/sdm/libs/hwc2/hwc_session_services.cpp b/sdm/libs/hwc2/hwc_session_services.cpp
index 0fbba4d0..f4241e06 100644
--- a/sdm/libs/hwc2/hwc_session_services.cpp
+++ b/sdm/libs/hwc2/hwc_session_services.cpp
@@ -234,19 +234,21 @@ Return<void> HWCSession::getDisplayAttributes(uint32_t configIndex,
IDisplayConfig::DisplayAttributes display_attributes = {};
int disp_id = MapDisplayType(dpy);
- SEQUENCE_WAIT_SCOPE_LOCK(locker_[disp_id]);
- if (disp_id >= 0 && hwc_display_[disp_id]) {
- DisplayConfigVariableInfo hwc_display_attributes;
- error = hwc_display_[disp_id]->GetDisplayAttributesForConfig(static_cast<int>(configIndex),
- &hwc_display_attributes);
- if (!error) {
- display_attributes.vsyncPeriod = hwc_display_attributes.vsync_period_ns;
- display_attributes.xRes = hwc_display_attributes.x_pixels;
- display_attributes.yRes = hwc_display_attributes.y_pixels;
- display_attributes.xDpi = hwc_display_attributes.x_dpi;
- display_attributes.yDpi = hwc_display_attributes.y_dpi;
- display_attributes.panelType = IDisplayConfig::DisplayPortType::DISPLAY_PORT_DEFAULT;
- display_attributes.isYuv = hwc_display_attributes.is_yuv;
+ if (disp_id >= HWC_DISPLAY_PRIMARY && disp_id < HWC_NUM_DISPLAY_TYPES) {
+ SEQUENCE_WAIT_SCOPE_LOCK(locker_[disp_id]);
+ if (hwc_display_[disp_id]) {
+ DisplayConfigVariableInfo hwc_display_attributes;
+ error = hwc_display_[disp_id]->GetDisplayAttributesForConfig(static_cast<int>(configIndex),
+ &hwc_display_attributes);
+ if (!error) {
+ display_attributes.vsyncPeriod = hwc_display_attributes.vsync_period_ns;
+ display_attributes.xRes = hwc_display_attributes.x_pixels;
+ display_attributes.yRes = hwc_display_attributes.y_pixels;
+ display_attributes.xDpi = hwc_display_attributes.x_dpi;
+ display_attributes.yDpi = hwc_display_attributes.y_dpi;
+ display_attributes.panelType = IDisplayConfig::DisplayPortType::DISPLAY_PORT_DEFAULT;
+ display_attributes.isYuv = hwc_display_attributes.is_yuv;
+ }
}
}