diff options
author | Ramkumar Radhakrishnan <ramkumar@codeaurora.org> | 2017-11-21 13:50:10 -0800 |
---|---|---|
committer | Ramkumar Radhakrishnan <ramkumar@codeaurora.org> | 2017-11-21 14:08:19 -0800 |
commit | 6b05e5d03b69437bcd64b83c6a818429159d3440 (patch) | |
tree | f2f8476e5056360d4f1a16d02b4ab2adf99bc0c4 /sdm/libs | |
parent | 28f871dabaab85700f02e432f4080237cad91103 (diff) | |
download | display-6b05e5d03b69437bcd64b83c6a818429159d3440.tar.gz |
hwc2: Fix out of bound check in getDisplayAttributes()
Change-Id: I74bffe3a2ec7db339541339048f0cbb405d85de9
CRs-Fixed: 2147264
Diffstat (limited to 'sdm/libs')
-rw-r--r-- | sdm/libs/hwc2/hwc_session_services.cpp | 28 |
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; + } } } |