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

Commit 15519ab1 authored by Pawan Wagh's avatar Pawan Wagh Committed by Automerger Merge Worker
Browse files

Merge "Adding ServiceManagerTestFuzzer to use seed corpus" am: 39b0cef8 am:...

Merge "Adding ServiceManagerTestFuzzer to use seed corpus" am: 39b0cef8 am: 82189f28 am: a005f012 am: 84a221ab

Original change: https://android-review.googlesource.com/c/platform/frameworks/native/+/2551036



Change-Id: Idf03c6dac60c9cbb3852ab71f810520cd4a42d85
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents c125bc4c 84a221ab
Loading
Loading
Loading
Loading
+16 −3
Original line number Diff line number Diff line
@@ -93,9 +93,22 @@ cc_fuzz {
        libfuzzer_options: [
            "max_len=50000",
        ],
        cc: [
            "smoreland@google.com",
            "waghpawan@google.com",
    },
}

// Adding this new fuzzer to test the corpus generated by record_binder
cc_fuzz {
    name: "servicemanager_test_fuzzer",
    defaults: [
        "servicemanager_defaults",
        "service_fuzzer_defaults",
    ],
    host_supported: true,
    srcs: ["fuzzers/ServiceManagerTestFuzzer.cpp"],
    fuzz_config: {
        libfuzzer_options: [
            "max_len=50000",
        ],
    },
    corpus: ["fuzzers/servicemamanager_fuzzer_corpus/*"],
}
+48 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2023 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#include <fuzzbinder/libbinder_driver.h>
#include <utils/StrongPointer.h>

#include "Access.h"
#include "ServiceManager.h"

using ::android::Access;
using ::android::Parcel;
using ::android::ServiceManager;
using ::android::sp;

extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
    FuzzedDataProvider provider(data, size);
    auto accessPtr = std::make_unique<Access>();
    auto serviceManager = sp<ServiceManager>::make(std::move(accessPtr));

    // Reserved bytes
    provider.ConsumeBytes<uint8_t>(8);
    uint32_t code = provider.ConsumeIntegral<uint32_t>();
    uint32_t flag = provider.ConsumeIntegral<uint32_t>();
    std::vector<uint8_t> parcelData = provider.ConsumeRemainingBytes<uint8_t>();

    Parcel inputParcel;
    inputParcel.setData(parcelData.data(), parcelData.size());

    Parcel reply;
    serviceManager->transact(code, inputParcel, &reply, flag);

    serviceManager->clear();

    return 0;
}
+40 B

File added.

No diff preview for this file type.

+136 B

File added.

No diff preview for this file type.

+40 B

File added.

No diff preview for this file type.

Loading