1#undef __USE_STRING_INLINES
2#define __USE_STRING_INLINES
3#include <sys/cdefs.h>
4#include <libc-diag.h>
5#if __GNUC_PREREQ (8, 0)
6/* GCC warns about strncat truncating output; this is deliberately
7 tested here. If fortify is enabled, it is also triggered by the
8 wrappers. */
9DIAG_IGNORE_NEEDS_COMMENT (8, "-Wstringop-truncation");
10#endif
11#include <stdio.h>
12#include <stdlib.h>
13#include <string.h>
14
15char d[3] = "\0\1\2";
16
17int
18main (void)
19{
20 DIAG_PUSH_NEEDS_COMMENT;
21 strncat (dest: d, src: "\5\6", n: 1);
22 DIAG_POP_NEEDS_COMMENT;
23 if (d[0] != '\5')
24 {
25 puts (s: "d[0] != '\\5'");
26 exit (1);
27 }
28 if (d[1] != '\0')
29 {
30 puts (s: "d[1] != '\\0'");
31 exit (1);
32 }
33 if (d[2] != '\2')
34 {
35 puts (s: "d[2] != '\\2'");
36 exit (1);
37 }
38
39 return 0;
40}
41

source code of glibc/string/bug-strncat1.c