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