diff options
| author | 2023-01-23 23:37:23 +0000 | |
|---|---|---|
| committer | 2023-01-23 23:37:23 +0000 | |
| commit | 8b172cefcbcb3856d623844f8bdffb7d9cd6a7c4 (patch) | |
| tree | 561d65a15264da39523a1e34fd6c0e07da4a5b9d /libs/gui/LayerState.cpp | |
| parent | 8b1dd38bd7d8a2a6997ab3c09aeb8ba3acc33fad (diff) | |
| parent | 3ea58dbc1d7a248160403f089b9998bf6694aae1 (diff) | |
Mitigate the security vulnerability by sanitizing the transaction flags. am: 3ea58dbc1d
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/native/+/20886664
Change-Id: Ib704fa0d4a35234e247eb6cc1f596defb4d7d23f
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
Diffstat (limited to 'libs/gui/LayerState.cpp')
| -rw-r--r-- | libs/gui/LayerState.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/libs/gui/LayerState.cpp b/libs/gui/LayerState.cpp index bb4b44684f..849781a8e3 100644 --- a/libs/gui/LayerState.cpp +++ b/libs/gui/LayerState.cpp @@ -381,6 +381,27 @@ void DisplayState::merge(const DisplayState& other) { } } +void DisplayState::sanitize(int32_t permissions) { + if (what & DisplayState::eLayerStackChanged) { + if (!(permissions & layer_state_t::Permission::ACCESS_SURFACE_FLINGER)) { + what &= ~DisplayState::eLayerStackChanged; + ALOGE("Stripped attempt to set eLayerStackChanged in sanitize"); + } + } + if (what & DisplayState::eDisplayProjectionChanged) { + if (!(permissions & layer_state_t::Permission::ACCESS_SURFACE_FLINGER)) { + what &= ~DisplayState::eDisplayProjectionChanged; + ALOGE("Stripped attempt to set eDisplayProjectionChanged in sanitize"); + } + } + if (what & DisplayState::eSurfaceChanged) { + if (!(permissions & layer_state_t::Permission::ACCESS_SURFACE_FLINGER)) { + what &= ~DisplayState::eSurfaceChanged; + ALOGE("Stripped attempt to set eSurfaceChanged in sanitize"); + } + } +} + void layer_state_t::sanitize(int32_t permissions) { // TODO: b/109894387 // |