1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* vim: set ts=2 et sw=2 tw=80: */
3 /* This Source Code Form is subject to the terms of the Mozilla Public
4 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
5 * You can obtain one at http://mozilla.org/MPL/2.0/. */
6
7 #include "gtest/gtest.h"
8 #include "scoped_ptrs_util.h"
9
10 namespace nss_test {
11
12 class MemcmpZeroTest : public ::testing::Test {
13 protected:
test_memcmp_zero(const std::vector<uint8_t> & mem)14 unsigned int test_memcmp_zero(const std::vector<uint8_t> &mem) {
15 return NSS_SecureMemcmpZero(mem.data(), mem.size());
16 };
17 };
18
TEST_F(MemcmpZeroTest,TestMemcmpZeroTrue)19 TEST_F(MemcmpZeroTest, TestMemcmpZeroTrue) {
20 unsigned int rv = test_memcmp_zero(std::vector<uint8_t>(37, 0));
21 EXPECT_EQ(0U, rv);
22 }
23
TEST_F(MemcmpZeroTest,TestMemcmpZeroFalse5)24 TEST_F(MemcmpZeroTest, TestMemcmpZeroFalse5) {
25 std::vector<uint8_t> vec(37, 0);
26 vec[5] = 1;
27 unsigned int rv = test_memcmp_zero(vec);
28 EXPECT_NE(0U, rv);
29 }
30
TEST_F(MemcmpZeroTest,TestMemcmpZeroFalse37)31 TEST_F(MemcmpZeroTest, TestMemcmpZeroFalse37) {
32 std::vector<uint8_t> vec(37, 0);
33 vec[vec.size() - 1] = 0xFF;
34 unsigned int rv = test_memcmp_zero(vec);
35 EXPECT_NE(0U, rv);
36 }
37
TEST_F(MemcmpZeroTest,TestMemcmpZeroFalse0)38 TEST_F(MemcmpZeroTest, TestMemcmpZeroFalse0) {
39 std::vector<uint8_t> vec(37, 0);
40 vec[0] = 1;
41 unsigned int rv = test_memcmp_zero(vec);
42 EXPECT_NE(0U, rv);
43 }
44
45 } // namespace nss_test
46