sanitizer_libc_test.cc revision eb2809311c94b73c269ccef8d68ae368642e5754
1//===-- sanitizer_libc_test.cc --------------------------------------------===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9// Tests for sanitizer_libc.h. 10//===----------------------------------------------------------------------===// 11 12#include "sanitizer_common/sanitizer_libc.h" 13#include "gtest/gtest.h" 14 15// A regression test for internal_memmove() implementation. 16TEST(SanitizerCommon, InternalMemmoveRegression) { 17 char src[] = "Hello World"; 18 char *dest = src + 6; 19 __sanitizer::internal_memmove(dest, src, 5); 20 EXPECT_EQ(dest[0], src[0]); 21 EXPECT_EQ(dest[4], src[4]); 22} 23 24TEST(SanitizerCommon, mem_is_zero) { 25 size_t size = 128; 26 char *x = new char[size]; 27 memset(x, 0, size); 28 for (size_t pos = 0; pos < size; pos++) { 29 x[pos] = 1; 30 for (size_t beg = 0; beg < size; beg++) { 31 for (size_t end = beg; end < size; end++) { 32 // fprintf(stderr, "pos %zd beg %zd end %zd \n", pos, beg, end); 33 if (beg <= pos && pos < end) 34 EXPECT_FALSE(__sanitizer::mem_is_zero(x + beg, end - beg)); 35 else 36 EXPECT_TRUE(__sanitizer::mem_is_zero(x + beg, end - beg)); 37 } 38 } 39 x[pos] = 0; 40 } 41 delete [] x; 42} 43