xref: /llvm-project/compiler-rt/test/sanitizer_common/TestCases/Posix/strlcpy.cpp (revision 975fa725063fe33aba02164a53c4ef66662e68d8)
174989affSNico Weber // RUN: %clangxx -O0 -g %s -o %t && %run %t
274989affSNico Weber 
3*975fa725SPaul Robinson // UNSUPPORTED: target={{.*linux.*}}
474989affSNico Weber 
574989affSNico Weber #include <stdio.h>
674989affSNico Weber #include <stdlib.h>
774989affSNico Weber #include <string.h>
874989affSNico Weber 
test1()974989affSNico Weber void test1() {
1074989affSNico Weber   const char src[] = "abc";
1174989affSNico Weber   char dst[7] = {'x', 'y', 'z', 0};
1274989affSNico Weber   size_t len;
1374989affSNico Weber 
1474989affSNico Weber   len = strlcpy(dst, src, sizeof(dst));
1574989affSNico Weber   printf("%s %zu ", dst, len);
1674989affSNico Weber }
1774989affSNico Weber 
test2()1874989affSNico Weber void test2() {
1974989affSNico Weber   const char src[] = "abc";
2074989affSNico Weber   char dst[7] = {0};
2174989affSNico Weber   size_t len;
2274989affSNico Weber 
2374989affSNico Weber   len = strlcat(dst, src, sizeof(dst));
2474989affSNico Weber   printf("%s %zu ", dst, len);
2574989affSNico Weber }
2674989affSNico Weber 
test3()2774989affSNico Weber void test3() {
2874989affSNico Weber   const char src[] = "abc";
2974989affSNico Weber   char dst[4] = {'x', 'y', 'z', 0};
3074989affSNico Weber   size_t len;
3174989affSNico Weber 
3274989affSNico Weber   len = strlcat(dst, src, sizeof(dst));
3374989affSNico Weber   printf("%s %zu ", dst, len);
3474989affSNico Weber }
3574989affSNico Weber 
test4()3674989affSNico Weber void test4() {
3774989affSNico Weber   const char src[] = "";
3874989affSNico Weber   char dst[4] = {'x', 'y', 'z', 0};
3974989affSNico Weber   size_t len;
4074989affSNico Weber 
4174989affSNico Weber   len = strlcat(dst, src, sizeof(dst));
4274989affSNico Weber   printf("%s %zu\n", dst, len);
4374989affSNico Weber }
4474989affSNico Weber 
main(void)4574989affSNico Weber int main(void) {
4674989affSNico Weber   test1();
4774989affSNico Weber   test2();
4874989affSNico Weber   test3();
4974989affSNico Weber   test4();
5074989affSNico Weber 
5174989affSNico Weber   // CHECK: abc 3 abc 3 xyz 3  0
5274989affSNico Weber 
5374989affSNico Weber   return 0;
5474989affSNico Weber }
55