Ignore response in case of failure
When the status indicates failure, the output should be ignored.
Otherwise, conversion may fail and crash.
Fixes: 175840225
Test: CTS audio tests
Change-Id: I2200b720d98714b44e9ad50ebc06e2c07de0289c
diff --git a/media/libaudioclient/AudioTrack.cpp b/media/libaudioclient/AudioTrack.cpp
index 1b1e143..d4cbbc3 100644
--- a/media/libaudioclient/AudioTrack.cpp
+++ b/media/libaudioclient/AudioTrack.cpp
@@ -1609,9 +1609,11 @@
media::CreateTrackResponse response;
status = audioFlinger->createTrack(VALUE_OR_FATAL(input.toAidl()), response);
- IAudioFlinger::CreateTrackOutput output = VALUE_OR_FATAL(
- IAudioFlinger::CreateTrackOutput::fromAidl(
- response));
+
+ IAudioFlinger::CreateTrackOutput output{};
+ if (status == NO_ERROR) {
+ output = VALUE_OR_FATAL(IAudioFlinger::CreateTrackOutput::fromAidl(response));
+ }
if (status != NO_ERROR || output.outputId == AUDIO_IO_HANDLE_NONE) {
ALOGE("%s(%d): AudioFlinger could not create track, status: %d output %d",