OSDN Git Service

surfaceflinger: Fix range check for getFormat
authorAjay Dudani <adudani@codeaurora.org>
Sun, 3 May 2015 18:44:55 +0000 (11:44 -0700)
committerDan Stoza <stoza@google.com>
Thu, 28 May 2015 21:19:10 +0000 (14:19 -0700)
Fix potential buffer overflow error in getFormat with indices
greater than MAX_HWC_DISPLAYS.

Change-Id: I5e5b69d8d043e900f5e33ca9a62e94ae5f857b68
(cherry picked from commit 4e3e30c2d5a2a6f7dc4ee8696b1ac2a52dffd5dc)

services/surfaceflinger/DisplayHardware/HWComposer.cpp

index 4e1b3ea..02c31ff 100644 (file)
@@ -464,7 +464,7 @@ sp<Fence> HWComposer::getDisplayFence(int disp) const {
 }
 
 uint32_t HWComposer::getFormat(int disp) const {
-    if (uint32_t(disp)>31 || !mAllocatedDisplayIDs.hasBit(disp)) {
+    if (static_cast<uint32_t>(disp) >= MAX_HWC_DISPLAYS || !mAllocatedDisplayIDs.hasBit(disp)) {
         return HAL_PIXEL_FORMAT_RGBA_8888;
     } else {
         return mDisplayData[disp].format;