X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fplugins%2Funittest%2Fstring_test.c;h=5016a86ac824a2321ebedaca93d45d34c2598098;hb=2de9c0f92;hp=2beee139ec9de8aedace19e64d9bc3edf48972eb;hpb=b0598497afde60146fe8480331c9f96e7a79475a;p=vpp.git diff --git a/src/plugins/unittest/string_test.c b/src/plugins/unittest/string_test.c index 2beee139ec9..5016a86ac82 100644 --- a/src/plugins/unittest/string_test.c +++ b/src/plugins/unittest/string_test.c @@ -349,10 +349,6 @@ test_clib_strcmp (vlib_main_t * vm, unformat_input_t * input) /* Null pointers comparison */ s = 0; indicator = clib_strcmp (s, s); - if (indicator != 0) - return -1; - /* verify it against strcmp */ - indicator = strcmp (s, s); if (indicator != 0) return -1; @@ -446,8 +442,6 @@ test_clib_strncmp (vlib_main_t * vm, unformat_input_t * input) v_indicator = strncmp (s1, "Every moment is a fresh beginning", s1len); if (v_indicator != 0) return -1; - if (v_indicator != indicator) - return -1; /* s1 > s2, 0 is expected since comparison is no more than n character */ indicator = clib_strncmp (s1, "Every moment is a fresh begin", @@ -459,8 +453,6 @@ test_clib_strncmp (vlib_main_t * vm, unformat_input_t * input) sizeof ("Every moment is a fresh begin") - 1); if (v_indicator != 0) return -1; - if (v_indicator != indicator) - return -1; /* s1 < s2, < 0 is expected */ indicator = clib_strncmp (s1, "Every moment is fresh beginning", @@ -504,8 +496,6 @@ test_clib_strncmp (vlib_main_t * vm, unformat_input_t * input) v_indicator = strncmp (s1, "Every moment is a fresh beginning", s1len + 1); if (v_indicator != 0) return -1; - if (v_indicator != indicator) - return -1; /* unterminated s1 */ s1[s1len] = 0x1; @@ -518,8 +508,6 @@ test_clib_strncmp (vlib_main_t * vm, unformat_input_t * input) sizeof ("Every moment is a fresh beginning") - 1); if (v_indicator != 0) return -1; - if (v_indicator != indicator) - return -1; /* OK, seems to work */ return 0; @@ -559,9 +547,12 @@ test_strcpy_s (vlib_main_t * vm, unformat_input_t * input) return -1; /* overlap fail */ +#if __GNUC__ < 8 + /* GCC 8 flunks this one at compile time... */ err = strcpy_s (dst, s1size, dst); if (err == EOK) return -1; +#endif /* overlap fail */ err = strcpy_s (dst, s1size, dst + 1); @@ -610,9 +601,12 @@ test_clib_strcpy (vlib_main_t * vm, unformat_input_t * input) return -1; /* overlap fail */ +#if __GNUC__ < 8 + /* GCC 8 flunks this one at compile time... */ err = clib_strcpy (dst, dst); if (err == EOK) return -1; +#endif /* overlap fail */ err = clib_strcpy (dst, dst + 1); @@ -628,7 +622,7 @@ test_strncpy_s (vlib_main_t * vm, unformat_input_t * input) { char src[] = "Those who dare to fail miserably can achieve greatly."; char dst[100], old_dst[100]; - int indicator; + int indicator, i; size_t s1size = sizeof (dst); // including null errno_t err; @@ -658,6 +652,10 @@ test_strncpy_s (vlib_main_t * vm, unformat_input_t * input) return -1; /* n > string len of src */ + err = clib_memset (dst, 1, sizeof (dst)); + if (err != EOK) + return -1; + err = strncpy_s (dst, s1size, src, clib_strnlen (src, sizeof (src)) + 10); if (err != EOK) return -1; @@ -667,6 +665,11 @@ test_strncpy_s (vlib_main_t * vm, unformat_input_t * input) if (indicator != 0) return -1; + /* Make sure bytes after strlen(dst) is untouched */ + for (i = 1 + clib_strnlen (dst, sizeof (dst)); i < sizeof (dst); i++) + if (dst[i] != 1) + return -1; + /* truncation, n >= dmax */ err = strncpy_s (dst, clib_strnlen (src, sizeof (src)), src, clib_strnlen (src, sizeof (src))); @@ -706,9 +709,12 @@ test_strncpy_s (vlib_main_t * vm, unformat_input_t * input) return -1; /* overlap fail */ +#if __GNUC__ < 8 + /* GCC 8 flunks this one at compile time... */ err = strncpy_s (dst, s1size, dst, s1size); if (err == EOK) return -1; +#endif /* OK, seems to work */ return 0; @@ -738,6 +744,8 @@ test_clib_strncpy (vlib_main_t * vm, unformat_input_t * input) return -1; /* Verify it against strncpy */ +#if __GNUC__ < 8 + /* GCC 8 debian flunks this one at compile time */ strncpy (dst, src, strlen (src)); /* This better not fail but check anyhow */ @@ -746,6 +754,7 @@ test_clib_strncpy (vlib_main_t * vm, unformat_input_t * input) return -1; if (indicator != 0) return -1; +#endif /* limited copy -- strlen src > n, copy up to n */ err = clib_strncpy (dst, "The price of greatness is responsibility.", 10); @@ -758,12 +767,16 @@ test_clib_strncpy (vlib_main_t * vm, unformat_input_t * input) return -1; /* verify it against strncpy */ memset_s (dst, sizeof (dst), 0, sizeof (dst)); + +#if __GNUC__ < 8 + /* GCC 8 flunks this one at compile time... */ strncpy (dst, "The price of greatness is responsibility.", 10); if (strcmp_s (dst, clib_strnlen (dst, sizeof (dst)), "The price ", &indicator) != EOK) return -1; if (indicator != 0) return -1; +#endif /* n > string len of src */ err = clib_strncpy (dst, src, clib_strnlen (src, sizeof (src)) + 10); @@ -775,12 +788,15 @@ test_clib_strncpy (vlib_main_t * vm, unformat_input_t * input) if (indicator != 0) return -1; /* Verify it against strncpy */ +#if __GNUC__ < 8 + /* GCC 8 debian flunks this one at compile time */ strncpy (dst, src, strlen (src)); if (strcmp_s (dst, clib_strnlen (dst, sizeof (dst)), src, &indicator) != EOK) return -1; if (indicator != 0) return -1; +#endif /* zero length copy */ clib_strncpy (old_dst, dst, clib_strnlen (dst, sizeof (dst))); @@ -806,9 +822,12 @@ test_clib_strncpy (vlib_main_t * vm, unformat_input_t * input) return -1; /* overlap fail */ +#if __GNUC__ < 8 + /* GCC 8 flunks this one at compile time... */ err = clib_strncpy (dst, dst, s1size); if (err == EOK) return -1; +#endif /* OK, seems to work */ return 0; @@ -858,9 +877,12 @@ test_strcat_s (vlib_main_t * vm, unformat_input_t * input) return -1; /* overlap fail */ +#if __GNUC__ < 8 + /* GCC 8 flunks this one at compile time... */ err = strcat_s (dst, s1size, dst); if (err != EINVAL) return -1; +#endif /* not enough space for dst */ err = strcat_s (dst, 10, src); @@ -925,9 +947,12 @@ test_clib_strcat (vlib_main_t * vm, unformat_input_t * input) return -1; /* overlap fail */ +#if __GNUC__ < 8 + /* GCC 8 flunks this one at compile time... */ err = clib_strcat (dst, dst); if (err != EINVAL) return -1; +#endif /* OK, seems to work */ return 0; @@ -1021,6 +1046,8 @@ test_strncat_s (vlib_main_t * vm, unformat_input_t * input) if (indicator != 0) return -1; /* verify it against strncat */ +#if __GNUC__ < 8 + /* GCC 8 debian flunks this one at compile time */ strcpy_s (dst, sizeof (dst), s1); strncat (dst, s2, 13); if (strcmp_s (dst, s1size - 1, "Two things are infinite: the universe ", @@ -1028,6 +1055,7 @@ test_strncat_s (vlib_main_t * vm, unformat_input_t * input) return -1; if (indicator != 0) return -1; +#endif /* negative stuff */ err = strncat_s (0, 0, 0, 1); @@ -1046,9 +1074,12 @@ test_strncat_s (vlib_main_t * vm, unformat_input_t * input) return -1; /* overlap fail */ +#if __GNUC__ < 8 + /* GCC 8 flunks this one at compile time... */ err = strncat_s (dst, s1size, dst, clib_strnlen (dst, sizeof (dst))); if (err != EINVAL) return -1; +#endif /* OK, seems to work */ return 0; @@ -1141,6 +1172,8 @@ test_clib_strncat (vlib_main_t * vm, unformat_input_t * input) if (indicator != 0) return -1; /* verify it against strncat */ +#if __GNUC__ < 8 + /* GCC 8 debian flunks this one at compile time */ strcpy_s (dst, sizeof (dst), s1); strncat (dst, s2, 13); if (strcmp_s (dst, s1size - 1, "Two things are infinite: the universe ", @@ -1148,6 +1181,7 @@ test_clib_strncat (vlib_main_t * vm, unformat_input_t * input) return -1; if (indicator != 0) return -1; +#endif /* negative stuff */ err = clib_strncat (0, 0, 1); @@ -1160,9 +1194,12 @@ test_clib_strncat (vlib_main_t * vm, unformat_input_t * input) return -1; /* overlap fail */ +#if __GNUC__ < 8 + /* GCC 8 flunks this one at compile time... */ err = clib_strncat (dst, dst, clib_strnlen (dst, sizeof (dst))); if (err != EINVAL) return -1; +#endif /* OK, seems to work */ return 0; @@ -1266,7 +1303,9 @@ static int test_clib_strtok (vlib_main_t * vm, unformat_input_t * input) { int indicator; - char *tok, *ptr, *s1; + char *s1 __attribute__ ((unused)); + char *tok __attribute__ ((unused)); + char *ptr __attribute__ ((unused)); char str1[40]; char *p2str; char *tok1, *tok2, *tok3, *tok4, *tok5, *tok6, *tok7; @@ -1368,6 +1407,8 @@ test_clib_strtok (vlib_main_t * vm, unformat_input_t * input) /* negative stuff */ s1 = 0; ptr = 0; +#if __GNUC__ < 8 + /* GCC 8 flunks this one at compile time... */ tok = clib_strtok (s1, s1, (char **) 0); if (tok != 0) return -1; @@ -1376,6 +1417,8 @@ test_clib_strtok (vlib_main_t * vm, unformat_input_t * input) tok = clib_strtok (s1, s1, &ptr); if (tok != 0) return -1; +#endif + /* verify it against strtok_r */ /* No can do. This causes a crash in strtok_r */ // tok = strtok_r (s1, " ", &ptr);