fortify-headers

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

test_wcsncat_safe.c (965B)


      1 #include "common.h"
      2 
      3 #include <wchar.h>
      4 
      5 int main(int argc, char** argv) {
      6   wchar_t buffer[8] = {0};
      7 
      8   /* Safe: empty buffer, append 7 wide chars → exactly fills buffer */
      9   wcsncat(buffer, L"ABCDEFG", 7);
     10   printf("%ls\n", buffer);
     11 
     12   /* Safe: reset, append with n larger than source.
     13    * src is L"AB" (len 2), n=100 → only 2 wchars copied */
     14   buffer[0] = L'\0';
     15   wcsncat(buffer, L"AB", 100);
     16   printf("%ls\n", buffer);
     17 
     18   /* Safe: partially filled, append fits exactly.
     19    * buffer = L"ABCD" (4 wchars), append L"EFG" n=3 → 4+3+1 = 8 = exact fit */
     20   buffer[0] = L'\0';
     21   wcsncat(buffer, L"ABCD", 4);
     22   wcsncat(buffer, L"EFG", 3);
     23   printf("%ls\n", buffer);
     24 
     25   /* Safe: n limits copy to fit.
     26    * buffer = L"ABCDE" (5 wchars), src long, n=2 → 5+2+1 = 8 = exact fit */
     27   buffer[0] = L'\0';
     28   wcsncat(buffer, L"ABCDE", 5);
     29   wcsncat(buffer, L"FGHIJKLM", 2);
     30   printf("%ls\n", buffer);
     31 
     32   /* All safe operations passed without trapping */
     33   return 0;
     34 }