@@ -60,6 +60,7 @@ static int fortify_write_overflows;
60
60
61
61
static const char array_of_10 [] = "this is 10" ;
62
62
static const char * ptr_of_11 = "this is 11!" ;
63
+ static const char * const unchanging_12 = "this is 12!!" ;
63
64
static char array_unknown [] = "compiler thinks I might change" ;
64
65
65
66
void fortify_add_kunit_error (int write )
@@ -83,12 +84,28 @@ void fortify_add_kunit_error(int write)
83
84
84
85
static void fortify_test_known_sizes (struct kunit * test )
85
86
{
87
+ char stack [80 ] = "Test!" ;
88
+
89
+ KUNIT_EXPECT_FALSE (test , __is_constexpr (__builtin_strlen (stack )));
90
+ KUNIT_EXPECT_EQ (test , __compiletime_strlen (stack ), 5 );
91
+
92
+ KUNIT_EXPECT_TRUE (test , __is_constexpr (__builtin_strlen ("88888888" )));
86
93
KUNIT_EXPECT_EQ (test , __compiletime_strlen ("88888888" ), 8 );
94
+
95
+ KUNIT_EXPECT_TRUE (test , __is_constexpr (__builtin_strlen (array_of_10 )));
87
96
KUNIT_EXPECT_EQ (test , __compiletime_strlen (array_of_10 ), 10 );
97
+
98
+ KUNIT_EXPECT_FALSE (test , __is_constexpr (__builtin_strlen (ptr_of_11 )));
88
99
KUNIT_EXPECT_EQ (test , __compiletime_strlen (ptr_of_11 ), 11 );
89
100
101
+ KUNIT_EXPECT_TRUE (test , __is_constexpr (__builtin_strlen (unchanging_12 )));
102
+ KUNIT_EXPECT_EQ (test , __compiletime_strlen (unchanging_12 ), 12 );
103
+
104
+ KUNIT_EXPECT_FALSE (test , __is_constexpr (__builtin_strlen (array_unknown )));
90
105
KUNIT_EXPECT_EQ (test , __compiletime_strlen (array_unknown ), SIZE_MAX );
106
+
91
107
/* Externally defined and dynamically sized string pointer: */
108
+ KUNIT_EXPECT_FALSE (test , __is_constexpr (__builtin_strlen (test -> name )));
92
109
KUNIT_EXPECT_EQ (test , __compiletime_strlen (test -> name ), SIZE_MAX );
93
110
}
94
111
0 commit comments