From 9a02eda8d5f95d754aa908e66089750183355511 Mon Sep 17 00:00:00 2001 From: Alec Mouri Date: Tue, 21 Apr 2020 17:39:34 -0700 Subject: Lookup layer handle when registering region sampling listener We must do this in order to prevent clients from providing a bogus handle when registering a region sampling listener. Fortunately, this particular path required a permissions check so it cannot be accessed from arbitrary apps on unrooted devices. But, we should not allow this type of memory corruption to be reachable by the system. Bug: 153467444 Test: libgui_test Test: Repro steps in the bug no longer reproduce Change-Id: I883506798574dfd0688371fdb6305cfad9d153fc --- services/surfaceflinger/RegionSamplingThread.cpp | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) (limited to 'services/surfaceflinger/RegionSamplingThread.cpp') diff --git a/services/surfaceflinger/RegionSamplingThread.cpp b/services/surfaceflinger/RegionSamplingThread.cpp index 68cd84f661..19c204cddb 100644 --- a/services/surfaceflinger/RegionSamplingThread.cpp +++ b/services/surfaceflinger/RegionSamplingThread.cpp @@ -199,13 +199,8 @@ RegionSamplingThread::~RegionSamplingThread() { } } -void RegionSamplingThread::addListener(const Rect& samplingArea, const sp& stopLayerHandle, +void RegionSamplingThread::addListener(const Rect& samplingArea, const wp& stopLayer, const sp& listener) { - wp stopLayer; - if (stopLayerHandle != nullptr && stopLayerHandle->localBinder() != nullptr) { - stopLayer = static_cast(stopLayerHandle.get())->owner; - } - sp asBinder = IInterface::asBinder(listener); asBinder->linkToDeath(this); std::lock_guard lock(mSamplingMutex); -- cgit v1.2.3-59-g8ed1b