Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1b835f6a authored by Phil Burk's avatar Phil Burk Committed by android-build-merger
Browse files

aaudio: protect against null client

am: ef7eaaf8

Change-Id: I826ce27ca34e11f3f39cd16288b0eb429c0efb59
parents 005605c2 ef7eaaf8
Loading
Loading
Loading
Loading
+9 −2
Original line number Original line Diff line number Diff line
@@ -251,8 +251,15 @@ status_t BnAAudioService::onTransact(uint32_t code, const Parcel& data,
            CHECK_INTERFACE(IAAudioService, data, reply);
            CHECK_INTERFACE(IAAudioService, data, reply);
            sp<IAAudioClient> client = interface_cast<IAAudioClient>(
            sp<IAAudioClient> client = interface_cast<IAAudioClient>(
                    data.readStrongBinder());
                    data.readStrongBinder());
            // readStrongBinder() can return null
            if (client.get() == nullptr) {
                ALOGE("BnAAudioService::%s(REGISTER_CLIENT) client is NULL!", __func__);
                android_errorWriteLog(0x534e4554, "116230453");
                return DEAD_OBJECT;
            } else {
                registerClient(client);
                registerClient(client);
                return NO_ERROR;
                return NO_ERROR;
            }
        } break;
        } break;


        case OPEN_STREAM: {
        case OPEN_STREAM: {
+6 −0
Original line number Original line Diff line number Diff line
@@ -67,6 +67,12 @@ aaudio_result_t AAudioClientTracker::registerClient(pid_t pid,
                                         const sp<IAAudioClient>& client) {
                                         const sp<IAAudioClient>& client) {
    ALOGV("registerClient(), calling pid = %d, getpid() = %d\n", pid, getpid());
    ALOGV("registerClient(), calling pid = %d, getpid() = %d\n", pid, getpid());


    if (client.get() == nullptr) {
        ALOGE("AAudioClientTracker::%s() client is NULL!", __func__);
        android_errorWriteLog(0x534e4554, "116230453");
        return AAUDIO_ERROR_NULL;
    }

    std::lock_guard<std::mutex> lock(mLock);
    std::lock_guard<std::mutex> lock(mLock);
    if (mNotificationClients.count(pid) == 0) {
    if (mNotificationClients.count(pid) == 0) {
        sp<NotificationClient> notificationClient = new NotificationClient(pid);
        sp<NotificationClient> notificationClient = new NotificationClient(pid);