summaryrefslogtreecommitdiff
path: root/audio/effect/all-versions/default/Effect.cpp
diff options
context:
space:
mode:
authorMikhail Naganov <mnaganov@google.com>2019-12-04 17:41:20 -0800
committerandroid-build-merger <android-build-merger@google.com>2019-12-04 17:41:20 -0800
commit2cee5c316ebb6cc2e4d48acbeac435a2d8bd09bd (patch)
tree4f1f1294e51a03581231c2cc0f1ff65d1d788324 /audio/effect/all-versions/default/Effect.cpp
parent8cdfeb2c1f8ce92f728c969f80871d81e2fa7d14 (diff)
parent21dfccb823cc92ab56c64501f0e1a2d4d1b321eb (diff)
Audio HAL: Fix UAF if the effect is removed after close am: 532240f4eb am: 78836599d2
am: 21dfccb823 Change-Id: I0c607d42aa174c7e50ee53b838a811ae00c33970
Diffstat (limited to 'audio/effect/all-versions/default/Effect.cpp')
-rw-r--r--audio/effect/all-versions/default/Effect.cpp5
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 e11e123038..406a571bef 100644
--- a/audio/effect/all-versions/default/Effect.cpp
+++ b/audio/effect/all-versions/default/Effect.cpp
@@ -709,7 +709,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
}