Audio HAL VTS: Sanitize setMode input
Some values of AudioMode are exposed although implementation detail.
Make sure the client can not use them.
Test: vts-tradefed run vts --module VtsHalAudioV2_0Target
Test: call/play music/record/video...
Bug: 36311550
Change-Id: If513c2a06efa8a92459f0af80c63232fc63302b0
Signed-off-by: Kevin Rocard <krocard@google.com>
diff --git a/audio/2.0/default/PrimaryDevice.cpp b/audio/2.0/default/PrimaryDevice.cpp
index 6f2268a..4e8f30f 100644
--- a/audio/2.0/default/PrimaryDevice.cpp
+++ b/audio/2.0/default/PrimaryDevice.cpp
@@ -132,6 +132,18 @@
}
Return<Result> PrimaryDevice::setMode(AudioMode mode) {
+ // INVALID, CURRENT, CNT, MAX are reserved for internal use.
+ // TODO: remove the values from the HIDL interface
+ switch (mode) {
+ case AudioMode::NORMAL:
+ case AudioMode::RINGTONE:
+ case AudioMode::IN_CALL:
+ case AudioMode::IN_COMMUNICATION:
+ break; // Valid values
+ default:
+ return Result::INVALID_ARGUMENTS;
+ };
+
return mDevice->analyzeStatus(
"set_mode", mDevice->device()->set_mode(
mDevice->device(), static_cast<audio_mode_t>(mode)));