diff options
author | Mikhail Naganov <mnaganov@google.com> | 2019-12-04 17:38:16 -0800 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2019-12-04 17:38:16 -0800 |
commit | 21dfccb823cc92ab56c64501f0e1a2d4d1b321eb (patch) | |
tree | df5f9533c3694c90ad5e1bccc2b08275c9994efc /audio/effect/all-versions/default/Effect.cpp | |
parent | a9dbfec768bd97054be614006b0d85e4b6efa5c8 (diff) | |
parent | 78836599d293cd4abb56ee20f3cfdd0ce0061a02 (diff) |
Audio HAL: Fix UAF if the effect is removed after close am: 532240f4eb
am: 78836599d2
Change-Id: Iadf728845159acc27d7085ed0018eccfc7f3eac7
Diffstat (limited to 'audio/effect/all-versions/default/Effect.cpp')
-rw-r--r-- | audio/effect/all-versions/default/Effect.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/audio/effect/all-versions/default/Effect.cpp b/audio/effect/all-versions/default/Effect.cpp index 0afa779f03..33ec996d57 100644 --- a/audio/effect/all-versions/default/Effect.cpp +++ b/audio/effect/all-versions/default/Effect.cpp @@ -713,7 +713,10 @@ Return<Result> Effect::close() { #elif MAJOR_VERSION >= 6 // No need to join the processing thread, it is part of the API contract that the client // must finish processing before closing the effect. - return analyzeStatus("EffectRelease", "", sContextCallFunction, EffectRelease(mHandle)); + Result retval = + analyzeStatus("EffectRelease", "", sContextCallFunction, EffectRelease(mHandle)); + EffectMap::getInstance().remove(mHandle); + return retval; #endif } |