• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #include <gtest/gtest.h>
2 #include <stdio.h>
3 #include <string.h>
4 
5 constexpr int BUF_SIZE = 100;
6 constexpr int EXPECT_NUM = 3;
7 constexpr int NUM = 666;
8 using namespace testing::ext;
9 
10 class FortifyVsnprintfchkTest : public testing::Test {
SetUp()11     void SetUp() override {}
TearDown()12     void TearDown() override {}
13 };
14 
15 extern "C" int __vsnprintf_chk(
16     char* dest, size_t supplied_size, int flags, size_t dst_len_from_compiler, const char* format, va_list va);
17 
VsnprintfHelper(char * str,size_t size,const char * format,...)18 static int VsnprintfHelper(char* str, size_t size, const char* format, ...)
19 {
20     va_list args;
21     va_start(args, format);
22     int result = __vsnprintf_chk(str, size - 1, 0, size - 1, format, args);
23     va_end(args);
24     return result;
25 }
26 
27 /**
28  * @tc.name: __vsnprintf_chk_001
29  * @tc.desc: Verify whether the specified content will be copied after the output of this function.
30  * @tc.type: FUNC
31  * */
32 HWTEST_F(FortifyVsnprintfchkTest, __vsnprintf_chk_001, TestSize.Level1)
33 {
34     char buffer[BUF_SIZE];
35     const char* format = "%d";
36     int value = NUM;
37     int result = VsnprintfHelper(buffer, sizeof(buffer), format, value);
38     EXPECT_EQ(EXPECT_NUM, result);
39     EXPECT_STREQ("666", buffer);
40 }