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