diff --git a/services/audioflinger/Threads.cpp b/services/audioflinger/Threads.cpp index d951e93b2a..297608c221 100644 --- a/services/audioflinger/Threads.cpp +++ b/services/audioflinger/Threads.cpp @@ -7633,6 +7633,10 @@ status_t AudioFlinger::MmapThread::start(const AudioClient& client, return NO_ERROR; } + if (!isOutput() && !recordingAllowed(client.packageName, client.clientPid, client.clientUid)) { + return PERMISSION_DENIED; + } + audio_port_handle_t portId = AUDIO_PORT_HANDLE_NONE; audio_io_handle_t io = mId; diff --git a/services/oboeservice/AAudioServiceStreamMMAP.cpp b/services/oboeservice/AAudioServiceStreamMMAP.cpp index 43595a4a77..47041c5033 100644 --- a/services/oboeservice/AAudioServiceStreamMMAP.cpp +++ b/services/oboeservice/AAudioServiceStreamMMAP.cpp @@ -92,7 +92,7 @@ aaudio_result_t AAudioServiceStreamMMAP::start() { aaudio_result_t result = AAudioServiceStreamBase::start(); if (!mInService && result == AAUDIO_OK) { - startClient(mMmapClient, &mClientHandle); + result = startClient(mMmapClient, &mClientHandle); } return result; } @@ -107,7 +107,7 @@ aaudio_result_t AAudioServiceStreamMMAP::pause() { aaudio_result_t result = AAudioServiceStreamBase::pause(); // TODO put before base::pause()? if (!mInService) { - stopClient(mClientHandle); + (void) stopClient(mClientHandle); } return result; } @@ -119,7 +119,7 @@ aaudio_result_t AAudioServiceStreamMMAP::stop() { aaudio_result_t result = AAudioServiceStreamBase::stop(); // TODO put before base::stop()? if (!mInService) { - stopClient(mClientHandle); + (void) stopClient(mClientHandle); } return result; }