mirror of
https://github.com/Evolution-X/hardware_interfaces
synced 2026-02-01 16:09:42 +00:00
audio HAL - fix UAFs am: 7283cbe8cb
Original change: https://googleplex-android-review.googlesource.com/c/platform/hardware/interfaces/+/14212414 Change-Id: I975f17cc4c76755b4da89f7782dab18f2e0f36b4
This commit is contained in:
@@ -387,9 +387,9 @@ Return<void> StreamIn::prepareForReading(uint32_t frameSize, uint32_t framesCoun
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Create and launch the thread.
|
// Create and launch the thread.
|
||||||
auto tempReadThread =
|
sp<ReadThread> tempReadThread =
|
||||||
std::make_unique<ReadThread>(&mStopReadThread, mStream, tempCommandMQ.get(),
|
new ReadThread(&mStopReadThread, mStream, tempCommandMQ.get(), tempDataMQ.get(),
|
||||||
tempDataMQ.get(), tempStatusMQ.get(), tempElfGroup.get());
|
tempStatusMQ.get(), tempElfGroup.get());
|
||||||
if (!tempReadThread->init()) {
|
if (!tempReadThread->init()) {
|
||||||
ALOGW("failed to start reader thread: %s", strerror(-status));
|
ALOGW("failed to start reader thread: %s", strerror(-status));
|
||||||
sendError(Result::INVALID_ARGUMENTS);
|
sendError(Result::INVALID_ARGUMENTS);
|
||||||
@@ -405,7 +405,7 @@ Return<void> StreamIn::prepareForReading(uint32_t frameSize, uint32_t framesCoun
|
|||||||
mCommandMQ = std::move(tempCommandMQ);
|
mCommandMQ = std::move(tempCommandMQ);
|
||||||
mDataMQ = std::move(tempDataMQ);
|
mDataMQ = std::move(tempDataMQ);
|
||||||
mStatusMQ = std::move(tempStatusMQ);
|
mStatusMQ = std::move(tempStatusMQ);
|
||||||
mReadThread = tempReadThread.release();
|
mReadThread = tempReadThread;
|
||||||
mEfGroup = tempElfGroup.release();
|
mEfGroup = tempElfGroup.release();
|
||||||
threadInfo.pid = getpid();
|
threadInfo.pid = getpid();
|
||||||
threadInfo.tid = mReadThread->getTid();
|
threadInfo.tid = mReadThread->getTid();
|
||||||
|
|||||||
@@ -370,9 +370,9 @@ Return<void> StreamOut::prepareForWriting(uint32_t frameSize, uint32_t framesCou
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Create and launch the thread.
|
// Create and launch the thread.
|
||||||
auto tempWriteThread =
|
sp<WriteThread> tempWriteThread =
|
||||||
std::make_unique<WriteThread>(&mStopWriteThread, mStream, tempCommandMQ.get(),
|
new WriteThread(&mStopWriteThread, mStream, tempCommandMQ.get(), tempDataMQ.get(),
|
||||||
tempDataMQ.get(), tempStatusMQ.get(), tempElfGroup.get());
|
tempStatusMQ.get(), tempElfGroup.get());
|
||||||
if (!tempWriteThread->init()) {
|
if (!tempWriteThread->init()) {
|
||||||
ALOGW("failed to start writer thread: %s", strerror(-status));
|
ALOGW("failed to start writer thread: %s", strerror(-status));
|
||||||
sendError(Result::INVALID_ARGUMENTS);
|
sendError(Result::INVALID_ARGUMENTS);
|
||||||
@@ -388,7 +388,7 @@ Return<void> StreamOut::prepareForWriting(uint32_t frameSize, uint32_t framesCou
|
|||||||
mCommandMQ = std::move(tempCommandMQ);
|
mCommandMQ = std::move(tempCommandMQ);
|
||||||
mDataMQ = std::move(tempDataMQ);
|
mDataMQ = std::move(tempDataMQ);
|
||||||
mStatusMQ = std::move(tempStatusMQ);
|
mStatusMQ = std::move(tempStatusMQ);
|
||||||
mWriteThread = tempWriteThread.release();
|
mWriteThread = tempWriteThread;
|
||||||
mEfGroup = tempElfGroup.release();
|
mEfGroup = tempElfGroup.release();
|
||||||
threadInfo.pid = getpid();
|
threadInfo.pid = getpid();
|
||||||
threadInfo.tid = mWriteThread->getTid();
|
threadInfo.tid = mWriteThread->getTid();
|
||||||
|
|||||||
Reference in New Issue
Block a user