test_wcsnrtombs_static.c (561B)
1 #include "common.h" 2 3 #include <wchar.h> 4 #include <string.h> 5 6 int main(int argc, char** argv) { 7 char buffer[4] = {0}; 8 const wchar_t src[] = L"ABCDEFGHIJ"; 9 const wchar_t *srcp = src; 10 mbstate_t st; 11 memset(&st, 0, sizeof(st)); 12 13 /* Safe: convert up to 2 wide chars, write at most 2 bytes */ 14 srcp = src; 15 wcsnrtombs(buffer, &srcp, 2, 2, &st); 16 17 /* Unsafe: ask to write 16 bytes into 4-byte buffer */ 18 srcp = src; 19 memset(&st, 0, sizeof(st)); 20 CHK_FAIL_START 21 wcsnrtombs(buffer, &srcp, 10, 16, &st); 22 CHK_FAIL_END 23 24 puts(buffer); 25 return ret; 26 }