From ce812a22ca63d74ba48e0a7ebb0ea521837b2efd Mon Sep 17 00:00:00 2001 From: Tri Vo Date: Wed, 10 Feb 2021 13:31:22 -0800 Subject: [PATCH 1/2] trusty: Fix up error messages Bug: 171750250 Test: m Change-Id: I41cde13a891da36c85df6a451b2d051c18365797 --- trusty/coverage/coverage.cpp | 4 ++-- trusty/fuzz/utils.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/trusty/coverage/coverage.cpp b/trusty/coverage/coverage.cpp index 5eccdc503..9613d0fb5 100644 --- a/trusty/coverage/coverage.cpp +++ b/trusty/coverage/coverage.cpp @@ -130,7 +130,7 @@ Result CoverageRecord::Open() { req.open_args.uuid = uuid_; auto ret = Rpc(&req, -1, &resp); if (!ret.ok()) { - return Error() << "failed to open coverage client: "; + return Error() << "failed to open coverage client: " << ret.error(); } record_len_ = resp.open_args.record_len; shm_len_ = RoundPageUp(record_len_); @@ -153,7 +153,7 @@ Result CoverageRecord::Open() { req.share_record_args.shm_len = shm_len_; ret = Rpc(&req, dma_buf, &resp); if (!ret.ok()) { - return Error() << "failed to send shared memory: "; + return Error() << "failed to send shared memory: " << ret.error(); } shm_ = shm; diff --git a/trusty/fuzz/utils.cpp b/trusty/fuzz/utils.cpp index f4cf0b612..35263373b 100644 --- a/trusty/fuzz/utils.cpp +++ b/trusty/fuzz/utils.cpp @@ -113,7 +113,7 @@ Result TrustyApp::Write(const void* buf, size_t len) { int rc = write(ta_fd_, buf, len); alarm(0); if (rc < 0) { - return Error() << "failed to read TIPC message from TA: "; + return Error() << "failed to write TIPC message to TA: "; } return {}; From 19eccb4f51ffd68944540ddee771faadbf49b54b Mon Sep 17 00:00:00 2001 From: Tri Vo Date: Wed, 10 Feb 2021 15:29:57 -0800 Subject: [PATCH 2/2] trusty: Allow fuzzing without coverage Bug: 171750250 Test: m Change-Id: I9e4cbf11fd223092f9ad800b35d0502c27f71e8f --- trusty/coverage/coverage.cpp | 9 ++++++++- trusty/coverage/include/trusty/coverage/coverage.h | 1 + trusty/fuzz/counters.cpp | 12 ++++++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/trusty/coverage/coverage.cpp b/trusty/coverage/coverage.cpp index 9613d0fb5..3c6b5c510 100644 --- a/trusty/coverage/coverage.cpp +++ b/trusty/coverage/coverage.cpp @@ -29,6 +29,7 @@ #include #include #include +#include #define COVERAGE_CLIENT_PORT "com.android.trusty.coverage.client" @@ -122,7 +123,9 @@ Result CoverageRecord::Open() { int fd = tipc_connect(tipc_dev_.c_str(), COVERAGE_CLIENT_PORT); if (fd < 0) { - return ErrnoError() << "failed to connect to Trusty coverarge server: "; + // Don't error out to support fuzzing builds without coverage, e.g. for repros. + std::cerr << "WARNING!!! Failed to connect to Trusty coverarge server." << std::endl; + return {}; } coverage_srv_fd_.reset(fd); @@ -160,6 +163,10 @@ Result CoverageRecord::Open() { return {}; } +bool CoverageRecord::IsOpen() { + return shm_; +} + void CoverageRecord::ResetFullRecord() { auto header_region = GetRegionBounds(COV_START); if (!header_region.ok()) { diff --git a/trusty/coverage/include/trusty/coverage/coverage.h b/trusty/coverage/include/trusty/coverage/coverage.h index 5da68dad2..9ccc9813a 100644 --- a/trusty/coverage/include/trusty/coverage/coverage.h +++ b/trusty/coverage/include/trusty/coverage/coverage.h @@ -47,6 +47,7 @@ class CoverageRecord { ~CoverageRecord(); Result Open(); + bool IsOpen(); void ResetFullRecord(); void ResetCounts(); void ResetPCs(); diff --git a/trusty/fuzz/counters.cpp b/trusty/fuzz/counters.cpp index 1e863acaf..4d340596c 100644 --- a/trusty/fuzz/counters.cpp +++ b/trusty/fuzz/counters.cpp @@ -41,6 +41,10 @@ namespace trusty { namespace fuzz { ExtraCounters::ExtraCounters(coverage::CoverageRecord* record) : record_(record) { + if (!record_->IsOpen()) { + return; + } + assert(fuzzer::ExtraCountersBegin()); assert(fuzzer::ExtraCountersEnd()); @@ -51,10 +55,18 @@ ExtraCounters::ExtraCounters(coverage::CoverageRecord* record) : record_(record) } ExtraCounters::~ExtraCounters() { + if (!record_->IsOpen()) { + return; + } + Flush(); } void ExtraCounters::Reset() { + if (!record_->IsOpen()) { + return; + } + record_->ResetCounts(); fuzzer::ClearExtraCounters(); }