fortify-headers

standalone fortify-source implementation
git clone git://git.2f30.org/fortify-headers
Log | Files | Refs | README | LICENSE

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 }