fortify-headers

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

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 }