Fix IAAudioService interface
Do not call data.checkInterface(this) unless needed,
and properly handle invalid interface.
This prevents stripping the file descriptor from the dump()
binder call.
Test: adb shell dumpsys media.aaudio
Bug: 38396780
Change-Id: I14c847e098145f49d4d5732787d3cc435dd05226
diff --git a/media/libaaudio/src/binding/IAAudioService.cpp b/media/libaaudio/src/binding/IAAudioService.cpp
index ef4a51f..247d1d2 100644
--- a/media/libaaudio/src/binding/IAAudioService.cpp
+++ b/media/libaaudio/src/binding/IAAudioService.cpp
@@ -244,10 +244,10 @@
int64_t nanoseconds;
aaudio_result_t result;
ALOGV("BnAAudioService::onTransact(%i) %i", code, flags);
- data.checkInterface(this);
switch(code) {
case OPEN_STREAM: {
+ CHECK_INTERFACE(IAAudioService, data, reply);
request.readFromParcel(&data);
//ALOGD("BnAAudioService::client openStream request dump --------------------");
@@ -261,6 +261,7 @@
} break;
case CLOSE_STREAM: {
+ CHECK_INTERFACE(IAAudioService, data, reply);
data.readInt32(&stream);
result = closeStream(stream);
//ALOGD("BnAAudioService::onTransact CLOSE_STREAM 0x%08X, result = %d",
@@ -270,6 +271,7 @@
} break;
case GET_STREAM_DESCRIPTION: {
+ CHECK_INTERFACE(IAAudioService, data, reply);
data.readInt32(&stream);
aaudio::AudioEndpointParcelable parcelable;
result = getStreamDescription(stream, parcelable);
@@ -288,6 +290,7 @@
} break;
case START_STREAM: {
+ CHECK_INTERFACE(IAAudioService, data, reply);
data.readInt32(&stream);
result = startStream(stream);
ALOGV("BnAAudioService::onTransact START_STREAM 0x%08X, result = %d",
@@ -297,6 +300,7 @@
} break;
case PAUSE_STREAM: {
+ CHECK_INTERFACE(IAAudioService, data, reply);
data.readInt32(&stream);
result = pauseStream(stream);
ALOGV("BnAAudioService::onTransact PAUSE_STREAM 0x%08X, result = %d",
@@ -306,6 +310,7 @@
} break;
case STOP_STREAM: {
+ CHECK_INTERFACE(IAAudioService, data, reply);
data.readInt32(&stream);
result = stopStream(stream);
ALOGV("BnAAudioService::onTransact STOP_STREAM 0x%08X, result = %d",
@@ -315,6 +320,7 @@
} break;
case FLUSH_STREAM: {
+ CHECK_INTERFACE(IAAudioService, data, reply);
data.readInt32(&stream);
result = flushStream(stream);
ALOGV("BnAAudioService::onTransact FLUSH_STREAM 0x%08X, result = %d",
@@ -324,6 +330,7 @@
} break;
case REGISTER_AUDIO_THREAD: {
+ CHECK_INTERFACE(IAAudioService, data, reply);
data.readInt32(&stream);
data.readInt32(&pid);
data.readInt32(&tid);
@@ -336,6 +343,7 @@
} break;
case UNREGISTER_AUDIO_THREAD: {
+ CHECK_INTERFACE(IAAudioService, data, reply);
data.readInt32(&stream);
data.readInt32(&pid);
data.readInt32(&tid);