audiopolicy_fuzzer : Bug Fix
Avoid passing 'AudioSource' - AUDIO_SOURCE_VOICE_COMMUNICATION and AUDIO_SOURCE_HOTWORD, that trigger abort
Test: ./audiopolicy_fuzzer clusterfuzz-testcase-minimized-audiopolicy_fuzzer-5644873249718272
Bug: 191372316
Change-Id: I58c6f3756bea5e5cb60f50c3dbb2de602bad1e07
(cherry picked from commit f886de8eaf6f1ae5a8a3b1927be5299ed842c0e9)
diff --git a/services/audiopolicy/fuzzer/audiopolicy_fuzzer.cpp b/services/audiopolicy/fuzzer/audiopolicy_fuzzer.cpp
index dff36e2..7c6907d 100644
--- a/services/audiopolicy/fuzzer/audiopolicy_fuzzer.cpp
+++ b/services/audiopolicy/fuzzer/audiopolicy_fuzzer.cpp
@@ -127,13 +127,20 @@
return result;
}();
+/**
+ * AudioSource - AUDIO_SOURCE_VOICE_COMMUNICATION and AUDIO_SOURCE_HOTWORD
+ * are excluded from kAudioSources[] in order to avoid the abort triggered
+ * for these two types of AudioSource in Engine::getDeviceForInputSource()
+ */
static const std::vector<audio_source_t> kAudioSources = [] {
std::vector<audio_source_t> result;
for (const auto enumVal : xsdc_enum_range<xsd::AudioSource>{}) {
audio_source_t audioSourceHal;
std::string audioSource = toString(enumVal);
- if (audio_source_from_string(audioSource.c_str(), &audioSourceHal)) {
- result.push_back(audioSourceHal);
+ if (enumVal != xsd::AudioSource::AUDIO_SOURCE_VOICE_COMMUNICATION &&
+ enumVal != xsd::AudioSource::AUDIO_SOURCE_HOTWORD &&
+ audio_source_from_string(audioSource.c_str(), &audioSourceHal)) {
+ result.push_back(audioSourceHal);
}
}
return result;