From f4bd36b72dfde8d67cf62d43d56b8ff27e15e2cc Mon Sep 17 00:00:00 2001 From: Ady Abraham Date: Fri, 5 Aug 2022 19:04:16 +0000 Subject: SurfaceComposerClient: add a range check in setAlpha Merged-In: I172321a4d3533e0506bad75a0a91e33fe921c2b7 Change-Id: I172321a4d3533e0506bad75a0a91e33fe921c2b7 Test: presubmit Bug: 274213741 --- libs/gui/SurfaceComposerClient.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/libs/gui/SurfaceComposerClient.cpp b/libs/gui/SurfaceComposerClient.cpp index 0f5192d41c..70013396d6 100644 --- a/libs/gui/SurfaceComposerClient.cpp +++ b/libs/gui/SurfaceComposerClient.cpp @@ -1274,6 +1274,12 @@ SurfaceComposerClient::Transaction& SurfaceComposerClient::Transaction::setAlpha mStatus = BAD_INDEX; return *this; } + if (alpha < 0.0f || alpha > 1.0f) { + ALOGE("SurfaceComposerClient::Transaction::setAlpha: invalid alpha %f", alpha); + mStatus = BAD_VALUE; + return *this; + + } s->what |= layer_state_t::eAlphaChanged; s->alpha = alpha; -- cgit v1.2.3 From 2b1856e8c4177ffc8b8ffb357da56409b4c3e187 Mon Sep 17 00:00:00 2001 From: Ady Abraham Date: Thu, 11 Aug 2022 16:27:34 -0700 Subject: SF: clamp alpha value instead of error SF tests expect that invalid alpha values will be clamped instead of returning failure. Test: atest SurfaceFlinger_test:SurfaceFlinger_test Bug: 274213741 Merged-In: I1318f21c21ec9b3fe9577ac3b9f32605e7f7f13a Change-Id: I1318f21c21ec9b3fe9577ac3b9f32605e7f7f13a (cherry picked from commit 24d0b2a19705cc64933bb6dfaf7147207a64e607) --- libs/gui/SurfaceComposerClient.cpp | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/libs/gui/SurfaceComposerClient.cpp b/libs/gui/SurfaceComposerClient.cpp index 70013396d6..05beb07891 100644 --- a/libs/gui/SurfaceComposerClient.cpp +++ b/libs/gui/SurfaceComposerClient.cpp @@ -1275,13 +1275,10 @@ SurfaceComposerClient::Transaction& SurfaceComposerClient::Transaction::setAlpha return *this; } if (alpha < 0.0f || alpha > 1.0f) { - ALOGE("SurfaceComposerClient::Transaction::setAlpha: invalid alpha %f", alpha); - mStatus = BAD_VALUE; - return *this; - + ALOGE("SurfaceComposerClient::Transaction::setAlpha: invalid alpha %f, clamping", alpha); } s->what |= layer_state_t::eAlphaChanged; - s->alpha = alpha; + s->alpha = std::clamp(alpha, 0.f, 1.f); registerSurfaceControlForCallback(sc); return *this; -- cgit v1.2.3