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

Commit 2d697d33 authored by Elliott Hughes's avatar Elliott Hughes Committed by Gerrit Code Review
Browse files

Merge "Fix SharedBuffer tests to pass under hwasan."

parents 8013cc3d f2f016e7
Loading
Loading
Loading
Loading
+39 −30
Original line number Diff line number Diff line
@@ -23,35 +23,44 @@

#include "SharedBuffer.h"

TEST(SharedBufferTest, TestAlloc) {
extern "C" void __hwasan_init() __attribute__((weak));
#define SKIP_WITH_HWASAN \
    if (&__hwasan_init != 0) GTEST_SKIP()

TEST(SharedBufferTest, alloc_death) {
    EXPECT_DEATH(android::SharedBuffer::alloc(SIZE_MAX), "");
    EXPECT_DEATH(android::SharedBuffer::alloc(SIZE_MAX - sizeof(android::SharedBuffer)), "");
}

  // Make sure we don't die here.
  // Check that null is returned, as we are asking for the whole address space.
  android::SharedBuffer* buf =
      android::SharedBuffer::alloc(SIZE_MAX - sizeof(android::SharedBuffer) - 1);
  ASSERT_EQ(nullptr, buf);
TEST(SharedBufferTest, alloc_null) {
    // Big enough to fail, not big enough to abort.
    SKIP_WITH_HWASAN;  // hwasan has a 2GiB allocation limit.
    ASSERT_EQ(nullptr, android::SharedBuffer::alloc(SIZE_MAX / 2));
}

  buf = android::SharedBuffer::alloc(0);
TEST(SharedBufferTest, alloc_zero_size) {
    android::SharedBuffer* buf = android::SharedBuffer::alloc(0);
    ASSERT_NE(nullptr, buf);
    ASSERT_EQ(0U, buf->size());
    buf->release();
}

TEST(SharedBufferTest, TestEditResize) {
TEST(SharedBufferTest, editResize_death) {
    android::SharedBuffer* buf = android::SharedBuffer::alloc(10);
    EXPECT_DEATH(buf->editResize(SIZE_MAX - sizeof(android::SharedBuffer)), "");
    buf = android::SharedBuffer::alloc(10);
    EXPECT_DEATH(buf->editResize(SIZE_MAX), "");
}

  buf = android::SharedBuffer::alloc(10);
  // Make sure we don't die here.
  // Check that null is returned, as we are asking for the whole address space.
  buf = buf->editResize(SIZE_MAX - sizeof(android::SharedBuffer) - 1);
  ASSERT_EQ(nullptr, buf);
TEST(SharedBufferTest, editResize_null) {
    // Big enough to fail, not big enough to abort.
    SKIP_WITH_HWASAN;  // hwasan has a 2GiB allocation limit.
    android::SharedBuffer* buf = android::SharedBuffer::alloc(10);
    ASSERT_EQ(nullptr, buf->editResize(SIZE_MAX / 2));
}

  buf = android::SharedBuffer::alloc(10);
TEST(SharedBufferTest, editResize_zero_size) {
    android::SharedBuffer* buf = android::SharedBuffer::alloc(10);
    buf = buf->editResize(0);
    ASSERT_EQ(0U, buf->size());
    buf->release();