diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-06-08 17:16:41 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-06-08 17:16:41 +0000 |
commit | 161b9a0d219768d212939164ca4dfff2186c5522 (patch) | |
tree | 1ff3736c7ff7a0a1d384207257fe8d16efd49bc0 | |
parent | ad5a57695b7b8d79decdf503a9a3e29c9657ddbf (diff) | |
parent | bd751238fade1f933deefdb34ba13fc8f868646b (diff) | |
download | bionic-android13-platform-release.tar.gz |
Snap for 10276566 from bd751238fade1f933deefdb34ba13fc8f868646b to tm-platform-releaseandroid-platform-13.0.0_r9android-platform-13.0.0_r8android-platform-13.0.0_r19android-platform-13.0.0_r18android-platform-13.0.0_r17android-platform-13.0.0_r16android-platform-13.0.0_r15android-platform-13.0.0_r14android-platform-13.0.0_r13android-platform-13.0.0_r12android-platform-13.0.0_r11android-platform-13.0.0_r10android13-platform-release
Change-Id: I06de071369cc63b45fd319a990e9169fc76f9592
-rw-r--r-- | tests/grp_pwd_test.cpp | 11 | ||||
-rw-r--r-- | tests/gwp_asan_test.cpp | 9 | ||||
-rw-r--r-- | tests/heap_tagging_level_test.cpp | 1 | ||||
-rw-r--r-- | tests/mntent_test.cpp | 30 | ||||
-rw-r--r-- | tests/stack_protector_test_helper.cpp | 7 |
5 files changed, 48 insertions, 10 deletions
diff --git a/tests/grp_pwd_test.cpp b/tests/grp_pwd_test.cpp index bf65720f9..65a54a659 100644 --- a/tests/grp_pwd_test.cpp +++ b/tests/grp_pwd_test.cpp @@ -441,6 +441,17 @@ static void expect_ids(T ids, bool is_group) { } return result; }; + + // AID_PRNG_SEEDER (1092) was added in TM-QPR2, but CTS is shared + // across Android 13 versions so we may or may not find it in this + // test (b/253185870). + if (android::base::GetIntProperty("ro.build.version.sdk", 0) == __ANDROID_API_T__) { +#ifndef AID_PRNG_SEEDER +#define AID_PRNG_SEEDER 1092 +#endif + ids.erase(AID_PRNG_SEEDER); + expected_ids.erase(AID_PRNG_SEEDER); + } EXPECT_EQ(expected_ids, ids) << return_differences(); } #endif diff --git a/tests/gwp_asan_test.cpp b/tests/gwp_asan_test.cpp index 8e5132304..5f5e3dd17 100644 --- a/tests/gwp_asan_test.cpp +++ b/tests/gwp_asan_test.cpp @@ -43,6 +43,15 @@ // mutation. extern "C" const char* __gnu_basename(const char* path); +// GWP-ASan tests can run much slower, especially when combined with HWASan. +// Triple the deadline to avoid flakes (b/238585984). +extern "C" bool GetInitialArgs(const char*** args, size_t* num_args) { + static const char* initial_args[] = {"--deadline_threshold_ms=270000"}; + *args = initial_args; + *num_args = 1; + return true; +} + // This file implements "torture testing" under GWP-ASan, where we sample every // single allocation. The upper limit for the number of GWP-ASan allocations in // the torture mode is is generally 40,000, so that svelte devices don't diff --git a/tests/heap_tagging_level_test.cpp b/tests/heap_tagging_level_test.cpp index 96c2ffd0b..ae678b7b5 100644 --- a/tests/heap_tagging_level_test.cpp +++ b/tests/heap_tagging_level_test.cpp @@ -222,6 +222,7 @@ class MemtagNoteTest : public testing::TestWithParam<std::tuple<MemtagNote, bool TEST_P(MemtagNoteTest, SEGV) { #if defined(__BIONIC__) && defined(__aarch64__) + SKIP_WITH_NATIVE_BRIDGE; // http://b/242170715 // Note that we do not check running_with_hwasan() - what matters here is whether the test binary // itself is built with HWASan. bool withHWASAN = __has_feature(hwaddress_sanitizer); diff --git a/tests/mntent_test.cpp b/tests/mntent_test.cpp index b86af9fb6..4b8fc9a80 100644 --- a/tests/mntent_test.cpp +++ b/tests/mntent_test.cpp @@ -19,24 +19,40 @@ #include <mntent.h> TEST(mntent, mntent_smoke) { + // Read all the entries with getmntent(). FILE* fp = setmntent("/proc/mounts", "r"); ASSERT_TRUE(fp != nullptr); - ASSERT_TRUE(getmntent(fp) != nullptr); + std::vector<std::string> fsnames; + std::vector<std::string> dirs; + mntent* me; + while ((me = getmntent(fp)) != nullptr) { + fsnames.push_back(me->mnt_fsname); + dirs.push_back(me->mnt_dir); + } + + ASSERT_EQ(1, endmntent(fp)); - bool saw_proc = false; + // Then again with getmntent_r(), checking they match. + fp = setmntent("/proc/mounts", "r"); + ASSERT_TRUE(fp != nullptr); struct mntent entry; char buf[BUFSIZ]; + size_t i = 0; while (getmntent_r(fp, &entry, buf, sizeof(buf)) != nullptr) { - if (strcmp(entry.mnt_fsname, "proc") == 0 && strcmp(entry.mnt_dir, "/proc") == 0) { - saw_proc = true; - } + ASSERT_EQ(fsnames[i], entry.mnt_fsname); + ASSERT_EQ(dirs[i], entry.mnt_dir); + i++; } - ASSERT_TRUE(saw_proc); - ASSERT_EQ(1, endmntent(fp)); + + // And just for good measure: we did see a /proc entry, right? + auto it = std::find(fsnames.begin(), fsnames.end(), "proc"); + ASSERT_TRUE(it != fsnames.end()); + size_t proc_index = it - fsnames.begin(); + ASSERT_EQ("/proc", dirs[proc_index]); } TEST(mntent, hasmntopt) { diff --git a/tests/stack_protector_test_helper.cpp b/tests/stack_protector_test_helper.cpp index fd90b939b..eddd94074 100644 --- a/tests/stack_protector_test_helper.cpp +++ b/tests/stack_protector_test_helper.cpp @@ -19,7 +19,8 @@ __attribute__((noinline)) void modify_stack_protector_test() { // We can't use memset here because it's fortified, and we want to test // the line of defense *after* that. // Without volatile, the generic x86/x86-64 targets don't write to the stack. - volatile char* p; - p = reinterpret_cast<volatile char*>(&p + 1); - *p = '\0'; + // We can't make a constant change, since the existing byte might already have + // had that value. + volatile char* p = reinterpret_cast<volatile char*>(&p + 1); + *p = ~*p; } |