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

Commit 0812bf0e authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "mediaresourcemanager_fuzzer: Bug Fix"

parents 5f5b70ef 505772ef
Loading
Loading
Loading
Loading
+22 −24
Original line number Original line Diff line number Diff line
@@ -226,33 +226,31 @@ void ResourceManagerServiceFuzzer::setResources() {
        mFuzzedDataProvider->ConsumeIntegralInRange<size_t>(kMinThreadPairs, kMaxThreadPairs);
        mFuzzedDataProvider->ConsumeIntegralInRange<size_t>(kMinThreadPairs, kMaxThreadPairs);
    // Make even number of threads
    // Make even number of threads
    size_t numThreads = numThreadPairs * 2;
    size_t numThreads = numThreadPairs * 2;
    resourceThreadArgs threadArgs;
    resourceThreadArgs threadArgs[numThreadPairs];
    vector<MediaResourceParcel> mediaResource;
    vector<MediaResourceParcel> mediaResource[numThreadPairs];
    pthread_t pt[numThreads];
    pthread_t pt[numThreads];
    int i;
    for (int k = 0; k < numThreadPairs; ++k) {
    for (i = 0; i < numThreads - 1; i += 2) {
        threadArgs[k].pid = mFuzzedDataProvider->ConsumeIntegral<int32_t>();
        threadArgs.pid = mFuzzedDataProvider->ConsumeIntegral<int32_t>();
        threadArgs[k].uid = mFuzzedDataProvider->ConsumeIntegral<int32_t>();
        threadArgs.uid = mFuzzedDataProvider->ConsumeIntegral<int32_t>();
        int32_t mediaResourceType = mFuzzedDataProvider->ConsumeIntegralInRange<int32_t>(
        int32_t mediaResourceType = mFuzzedDataProvider->ConsumeIntegralInRange<int32_t>(
            kMinResourceType, kMaxResourceType);
            kMinResourceType, kMaxResourceType);
        int32_t mediaResourceSubType = mFuzzedDataProvider->ConsumeIntegralInRange<int32_t>(
        int32_t mediaResourceSubType = mFuzzedDataProvider->ConsumeIntegralInRange<int32_t>(
            kMinResourceType, kMaxResourceType);
            kMinResourceType, kMaxResourceType);
        uint64_t mediaResourceValue = mFuzzedDataProvider->ConsumeIntegral<uint64_t>();
        uint64_t mediaResourceValue = mFuzzedDataProvider->ConsumeIntegral<uint64_t>();
        threadArgs.service = mService;
        threadArgs[k].service = mService;
        shared_ptr<IResourceManagerClient> testClient =
        shared_ptr<IResourceManagerClient> testClient =
            ::ndk::SharedRefBase::make<TestClient>(threadArgs.pid, mService);
                ::ndk::SharedRefBase::make<TestClient>(threadArgs[k].pid, mService);
        threadArgs.testClient = testClient;
        threadArgs[k].testClient = testClient;
        threadArgs.testClientId = getId(testClient);
        threadArgs[k].testClientId = getId(testClient);
        mediaResource.push_back(MediaResource(static_cast<MedResType>(mediaResourceType),
        mediaResource[k].push_back(MediaResource(static_cast<MedResType>(mediaResourceType),
                                                 static_cast<MedResSubType>(mediaResourceSubType),
                                                 static_cast<MedResSubType>(mediaResourceSubType),
                                                 mediaResourceValue));
                                                 mediaResourceValue));
        threadArgs.mediaResource = mediaResource;
        threadArgs[k].mediaResource = mediaResource[k];
        pthread_create(&pt[i], nullptr, addResource, &threadArgs);
        pthread_create(&pt[2 * k], nullptr, addResource, &threadArgs[k]);
        pthread_create(&pt[i + 1], nullptr, removeResource, &threadArgs);
        pthread_create(&pt[2 * k + 1], nullptr, removeResource, &threadArgs[k]);
        mediaResource.clear();
    }
    }


    for (i = 0; i < numThreads; ++i) {
    for (int i = 0; i < numThreads; ++i) {
        pthread_join(pt[i], nullptr);
        pthread_join(pt[i], nullptr);
    }
    }


@@ -265,14 +263,14 @@ void ResourceManagerServiceFuzzer::setResources() {
    int32_t mediaResourceSubType =
    int32_t mediaResourceSubType =
        mFuzzedDataProvider->ConsumeIntegralInRange<int32_t>(kMinResourceType, kMaxResourceType);
        mFuzzedDataProvider->ConsumeIntegralInRange<int32_t>(kMinResourceType, kMaxResourceType);
    uint64_t mediaResourceValue = mFuzzedDataProvider->ConsumeIntegral<uint64_t>();
    uint64_t mediaResourceValue = mFuzzedDataProvider->ConsumeIntegral<uint64_t>();
    mediaResource.push_back(MediaResource(static_cast<MedResType>(mediaResourceType),
    vector<MediaResourceParcel> mediaRes;
    mediaRes.push_back(MediaResource(static_cast<MedResType>(mediaResourceType),
                                     static_cast<MedResSubType>(mediaResourceSubType),
                                     static_cast<MedResSubType>(mediaResourceSubType),
                                     mediaResourceValue));
                                     mediaResourceValue));
    bool result;
    bool result;
    mService->reclaimResource(pidZero, mediaResource, &result);
    mService->reclaimResource(pidZero, mediaRes, &result);
    mService->removeResource(pidZero, getId(testClient), mediaResource);
    mService->removeResource(pidZero, getId(testClient), mediaRes);
    mService->removeClient(pidZero, getId(testClient));
    mService->removeClient(pidZero, getId(testClient));
    mediaResource.clear();
}
}


void ResourceManagerServiceFuzzer::setServiceLog() {
void ResourceManagerServiceFuzzer::setServiceLog() {