From 6b05e5d03b69437bcd64b83c6a818429159d3440 Mon Sep 17 00:00:00 2001 From: Ramkumar Radhakrishnan Date: Tue, 21 Nov 2017 13:50:10 -0800 Subject: hwc2: Fix out of bound check in getDisplayAttributes() Change-Id: I74bffe3a2ec7db339541339048f0cbb405d85de9 CRs-Fixed: 2147264 --- sdm/libs/hwc2/hwc_session_services.cpp | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) (limited to 'sdm/libs/hwc2/hwc_session_services.cpp') 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 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(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(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; + } } } -- cgit v1.2.3