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

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

Change-Id: I0404caf7d40fb7c9278b822a0fb72d2df6f6b908
This commit is contained in:
Tri Vo 2021-04-15 17:53:48 +00:00 committed by Automerger Merge Worker
commit 5cff16fb89
3 changed files with 16 additions and 15 deletions

View File

@ -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();

View File

@ -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();
auto ret = kTrustyApp.Write(data, size);
if (ret.ok()) {
ret = kTrustyApp.Read(&buf, sizeof(buf));
}
// Reconnect to ensure that the service is still up
kTrustyApp.Disconnect();
ret = kTrustyApp.Connect();
if (!ret.ok()) {
std::cerr << ret.error() << std::endl;
android::trusty::fuzz::Abort();
}
ret = ta.Write(data, size);
if (!ret.ok()) {
return -1;
}
ret = ta.Read(&buf, sizeof(buf));
if (!ret.ok()) {
return -1;
}
return 0;
return ret.ok() ? 0 : -1;
}

View File

@ -127,6 +127,10 @@ Result<int> TrustyApp::GetRawFd() {
return ta_fd_;
}
void TrustyApp::Disconnect() {
ta_fd_.reset();
}
void Abort() {
PrintTrustyLog();
exit(-1);