@@ -92,6 +92,24 @@ START_TEST(test_case_insensitive_alpha_only)
9292}
9393END_TEST
9494
95+ START_TEST (test_strcasecmp_prefix_regression )
96+ {
97+ ck_assert_int_lt (strcasecmp ("a" , "ab" ), 0 );
98+ ck_assert_int_gt (strcasecmp ("ab" , "a" ), 0 );
99+ ck_assert_int_lt (strcasecmp ("" , "a" ), 0 );
100+ ck_assert_int_gt (strcasecmp ("a" , "" ), 0 );
101+ }
102+ END_TEST
103+
104+ START_TEST (test_strncasecmp_n_limit_regression )
105+ {
106+ ck_assert_int_eq (strncasecmp ("ABC" , "abc" , 0 ), 0 );
107+ ck_assert_int_eq (strncasecmp ("" , "a" , 0 ), 0 );
108+ ck_assert_int_eq (strncasecmp ("AbCd" , "aBcE" , 3 ), 0 );
109+ ck_assert_int_lt (strncasecmp ("AbCd" , "aBcE" , 4 ), 0 );
110+ }
111+ END_TEST
112+
95113START_TEST (test_isalpha_helpers )
96114{
97115 ck_assert_int_eq (islower ('a' ), 1 );
@@ -145,6 +163,16 @@ START_TEST(test_strlen_strcmp)
145163}
146164END_TEST
147165
166+ START_TEST (test_strcmp_prefix_termination )
167+ {
168+ ck_assert_int_lt (strcmp ("a" , "abc" ), 0 );
169+ ck_assert_int_lt (strcmp ("ab" , "abc" ), 0 );
170+ ck_assert_int_gt (strcmp ("abc" , "ab" ), 0 );
171+ ck_assert_int_gt (strcmp ("abc" , "a" ), 0 );
172+ ck_assert_int_eq (strcmp ("" , "" ), 0 );
173+ }
174+ END_TEST
175+
148176START_TEST (test_strcpy_strncpy_strcat_strncat )
149177{
150178 char buf [8 ];
@@ -329,9 +357,12 @@ Suite *string_suite(void)
329357 tcase_add_test (tcase_strncasecmp , test_strncasecmp_n_exact );
330358 tcase_add_test (tcase_strncasecmp , test_strncasecmp_diff_before_n );
331359 tcase_add_test (tcase_strncasecmp , test_case_insensitive_alpha_only );
360+ tcase_add_test (tcase_strncasecmp , test_strcasecmp_prefix_regression );
361+ tcase_add_test (tcase_strncasecmp , test_strncasecmp_n_limit_regression );
332362 tcase_add_test (tcase_misc , test_isalpha_helpers );
333363 tcase_add_test (tcase_misc , test_memset_memcmp_memchr );
334364 tcase_add_test (tcase_misc , test_strlen_strcmp );
365+ tcase_add_test (tcase_misc , test_strcmp_prefix_termination );
335366 tcase_add_test (tcase_misc , test_strcpy_strncpy_strcat_strncat );
336367 tcase_add_test (tcase_misc , test_strncmp );
337368 tcase_add_test (tcase_misc , test_memcpy_memmove );
0 commit comments