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

Commit ceab40a0 authored by Tri Vo's avatar Tri Vo Committed by Automerger Merge Worker
Browse files

Merge "Trusty: Move tipc fuzzer connection to end of iteration" am: afe3212a

Original change: https://android-review.googlesource.com/c/platform/system/core/+/1675366

Change-Id: I1b99ebb2b7a727962ecb8d57f268dffa77e6791f
parents f34e4382 afe3212a
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ class TrustyApp {
    android::base::Result<void> Connect();
    android::base::Result<void> Read(void* buf, size_t len);
    android::base::Result<void> Write(const void* buf, size_t len);
    void Disconnect();

    android::base::Result<int> GetRawFd();

+11 −15
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ using android::trusty::fuzz::TrustyApp;
#error "Binary file name must be parameterized using -DTRUSTY_APP_FILENAME."
#endif

static TrustyApp kTrustyApp(TIPC_DEV, TRUSTY_APP_PORT);
static std::unique_ptr<CoverageRecord> record;

extern "C" int LLVMFuzzerInitialize(int* /* argc */, char*** /* argv */) {
@@ -52,8 +53,7 @@ extern "C" int LLVMFuzzerInitialize(int* /* argc */, char*** /* argv */) {
    }

    /* Make sure lazy-loaded TAs have started and connected to coverage service. */
    TrustyApp ta(TIPC_DEV, TRUSTY_APP_PORT);
    auto ret = ta.Connect();
    auto ret = kTrustyApp.Connect();
    if (!ret.ok()) {
        std::cerr << ret.error() << std::endl;
        exit(-1);
@@ -79,22 +79,18 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
    ExtraCounters counters(record.get());
    counters.Reset();

    TrustyApp ta(TIPC_DEV, TRUSTY_APP_PORT);
    auto ret = ta.Connect();
    if (!ret.ok()) {
        std::cerr << ret.error() << std::endl;
        android::trusty::fuzz::Abort();
    auto ret = kTrustyApp.Write(data, size);
    if (ret.ok()) {
        ret = kTrustyApp.Read(&buf, sizeof(buf));
    }

    ret = ta.Write(data, size);
    // Reconnect to ensure that the service is still up
    kTrustyApp.Disconnect();
    ret = kTrustyApp.Connect();
    if (!ret.ok()) {
        return -1;
    }

    ret = ta.Read(&buf, sizeof(buf));
    if (!ret.ok()) {
        return -1;
        std::cerr << ret.error() << std::endl;
        android::trusty::fuzz::Abort();
    }

    return 0;
    return ret.ok() ? 0 : -1;
}
+4 −0
Original line number Diff line number Diff line
@@ -127,6 +127,10 @@ Result<int> TrustyApp::GetRawFd() {
    return ta_fd_;
}

void TrustyApp::Disconnect() {
    ta_fd_.reset();
}

void Abort() {
    PrintTrustyLog();
    exit(-1);