└─$ gcc 22975.c -o wuftpd_realpath_exploit
22975.c:3:5: warning: multi-character literal with 10 characters exceeds 'int' size of 4 bytes
3 | The 'realpath()' function is a C-library procedure to resolve the canonical, absolute pathname of a file based on a path that may contain values such as '/', './', '../', or symbolic links. A vulnerability that was reported to affect the implementation of 'realpath()' in WU-FTPD has lead to the discovery that at least one implementation of the C library is also vulnerable. FreeBSD has announced that the off-by-one stack- buffer-overflow vulnerability is present in their libc. Other systems are also likely vulnerable.
| ^~~~~~~~~~~~
22975.c:3:5: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before '\x74682829'
22975.c:3:159: warning: multi-character character constant [-Wmultichar]
3 | lve the canonical, absolute pathname of a file based on a path that may contain values such as '/', './', '../', or symbolic links. A vulnerability that was reported to affect the implementation of 'realpath()' in WU-FTPD has lead to the discovery that at least one implementation of the C library is also vulnerable. FreeBSD has announced that the off-by-one stack- buffer-overflow vulnerability is present in their libc. Other systems are also likely vulnerable.
| ^~~~
22975.c:3:165: warning: multi-character character constant [-Wmultichar]
3 | e canonical, absolute pathname of a file based on a path that may contain values such as '/', './', '../', or symbolic links. A vulnerability that was reported to affect the implementation of 'realpath()' in WU-FTPD has lead to the discovery that at least one implementation of the C library is also vulnerable. FreeBSD has announced that the off-by-one stack- buffer-overflow vulnerability is present in their libc. Other systems are also likely vulnerable.
| ^~~~~
22975.c:3:257: warning: multi-character literal with 10 characters exceeds 'int' size of 4 bytes
3 | , './', '../', or symbolic links. A vulnerability that was reported to affect the implementation of 'realpath() in WU-FTPD has lead to the discovery that at least one implementation of the C library is also vulnerable. FreeBSD has announced that the off-by-one stack- buffer-overflow vulnerability is present in their libc. Other systems are also likely vulnerable.
| ^~~~~~~~~~~
22975.c:7:238: warning: multi-character literal with 10 characters exceeds 'int' size of 4 bytes
7 | with a patched version of the C library. Also, some applications may implement their own version of 'realpath(). These applications would require their own patches. FreeBSD has published a large list of applications that use 'realpath()'. Administrators of FreeBSD and other systems are urged to review it. For more information, see the advisory 'FreeBSD-SA-03:08.realpath'.
| ^~~~~~~~~~~
22975.c:7:364: warning: multi-character literal with 10 characters exceeds 'int' size of 4 bytes
7 | ations would require their own patches. FreeBSD has published a large list of applications that use 'realpath(). Administrators of FreeBSD and other systems are urged to review it. For more information, see the advisory 'FreeBSD-SA-03:08.realpath'.
| ^~~~~~~~~~~
22975.c:7:485: warning: multi-character literal with 25 characters exceeds 'int' size of 4 bytes
7 | trators of FreeBSD and other systems are urged to review it. For more information, see the advisory 'FreeBSD-SA-03:08.realpath'.
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/stdio.h:47,
from 22975.c:26:
/usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h:28:43: error: unknown type name ‘size_t’
28 | size_t __nbytes);
| ^~~~~~
/usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h:1:1: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
+++ |+#include <stddef.h>
1 | /* Copyright (C) 1991-2024 Free Software Foundation, Inc.
/usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h:37:44: error: unknown type name ‘size_t’
37 | size_t __nbytes);
| ^~~~~~
/usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h:37:44: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h:57:3: error: unknown type name ‘cookie_read_function_t’; did you mean ‘cookie_seek_function_t’?
57 | cookie_read_function_t *read; /* Read bytes. */
| ^~~~~~~~~~~~~~~~~~~~~~
| cookie_seek_function_t
/usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h:58:3: error: unknown type name ‘cookie_write_function_’; did you mean ‘cookie_close_function_t’?
58 | cookie_write_function_t *write; /* Write bytes. */
| ^~~~~~~~~~~~~~~~~~~~~~~
| cookie_close_function_t
/usr/include/stdio.h:314:35: error: unknown type name ‘size_t’
314 | extern FILE *fmemopen (void *__s, size_t __len, const char *__modes)
| ^~~~~~
/usr/include/stdio.h:130:1: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
129 | #include <bits/stdio_lim.h>
+++ |+#include <stddef.h>
130 |
/usr/include/stdio.h:320:47: error: unknown type name ‘size_t’
320 | extern FILE *open_memstream (char **__bufloc, size_t *__sizeloc) __THROW
| ^~~~~~
/usr/include/stdio.h:320:47: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/stdio.h:340:34: error: unknown type name ‘size_t’
340 | int __modes, size_t __n) __THROW __nonnull ((1));
| ^~~~~~
/usr/include/stdio.h:340:34: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/stdio.h:346:24: error: unknown type name ‘size_t’
346 | size_t __size) __THROW __nonnull ((1));
| ^~~~~~
/usr/include/stdio.h:346:24: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/stdio.h:385:44: error: unknown type name ‘size_t’
385 | extern int snprintf (char *__restrict __s, size_t __maxlen,
| ^~~~~~
/usr/include/stdio.h:385:44: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/stdio.h:389:45: error: unknown type name ‘size_t’
389 | extern int vsnprintf (char *__restrict __s, size_t __maxlen,
| ^~~~~~
/usr/include/stdio.h:389:45: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/stdio.h:690:30: error: unknown type name ‘size_t’
690 | size_t *__restrict __n, int __delimiter,
| ^~~~~~
/usr/include/stdio.h:690:30: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/stdio.h:693:28: error: unknown type name ‘size_t’
693 | size_t *__restrict __n, int __delimiter,
| ^~~~~~
/usr/include/stdio.h:693:28: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/stdio.h:698:27: error: unknown type name ‘size_t’
698 | size_t *__restrict __n,
| ^~~~~~
/usr/include/stdio.h:698:27: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/stdio.h:728:8: error: unknown type name ‘size_t’
728 | extern size_t fread (void *__restrict __ptr, size_t __size,
| ^~~~~~
/usr/include/stdio.h:728:8: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/stdio.h:728:46: error: unknown type name ‘size_t’
728 | extern size_t fread (void *__restrict __ptr, size_t __size,
| ^~~~~~
/usr/include/stdio.h:728:46: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/stdio.h:729:22: error: unknown type name ‘size_t’
729 | size_t __n, FILE *__restrict __stream) __wur
| ^~~~~~
/usr/include/stdio.h:729:22: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/stdio.h:735:8: error: unknown type name ‘size_t’
735 | extern size_t fwrite (const void *__restrict __ptr, size_t __size,
| ^~~~~~
/usr/include/stdio.h:735:8: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/stdio.h:735:53: error: unknown type name ‘size_t’
735 | extern size_t fwrite (const void *__restrict __ptr, size_t __size,
| ^~~~~~
/usr/include/stdio.h:735:53: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/stdio.h:736:23: error: unknown type name ‘size_t’
736 | size_t __n, FILE *__restrict __s) __nonnull((4));
| ^~~~~~
/usr/include/stdio.h:736:23: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/stdio.h:756:8: error: unknown type name ‘size_t’
756 | extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,
| ^~~~~~
/usr/include/stdio.h:756:8: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/stdio.h:756:55: error: unknown type name ‘size_t’
756 | extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,
| ^~~~~~
/usr/include/stdio.h:756:55: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/stdio.h:757:31: error: unknown type name ‘size_t’
757 | size_t __n, FILE *__restrict __stream) __wur
| ^~~~~~
/usr/include/stdio.h:757:31: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/stdio.h:759:8: error: unknown type name ‘size_t’
759 | extern size_t fwrite_unlocked (const void *__restrict __ptr, size_t __size,
| ^~~~~~
/usr/include/stdio.h:759:8: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/stdio.h:759:62: error: unknown type name ‘size_t’
759 | extern size_t fwrite_unlocked (const void *__restrict __ptr, size_t __size,
| ^~~~~~
/usr/include/stdio.h:759:62: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/stdio.h:760:32: error: unknown type name ‘size_t’
760 | size_t __n, FILE *__restrict __stream)
| ^~~~~~
/usr/include/stdio.h:760:32: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
In file included from 22975.c:27:
/usr/include/unistd.h:371:45: error: unknown type name ‘size_t’
371 | extern ssize_t read (int __fd, void *__buf, size_t __nbytes) __wur
| ^~~~~~
/usr/include/unistd.h:227:1: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
226 | #include <stddef.h>
+++ |+#include <stddef.h>
227 |
/usr/include/unistd.h:378:52: error: unknown type name ‘size_t’
378 | extern ssize_t write (int __fd, const void *__buf, size_t __n) __wur
| ^~~~~~
/usr/include/unistd.h:378:52: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/unistd.h:389:46: error: unknown type name ‘size_t’
389 | extern ssize_t pread (int __fd, void *__buf, size_t __nbytes,
| ^~~~~~
/usr/include/unistd.h:389:46: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/unistd.h:398:53: error: unknown type name ‘size_t’
398 | extern ssize_t pwrite (int __fd, const void *__buf, size_t __n,
| ^~~~~~
/usr/include/unistd.h:398:53: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/unistd.h:531:35: error: unknown type name ‘size_t’
531 | extern char *getcwd (char *__buf, size_t __size) __THROW __wur;
| ^~~~~~
/usr/include/unistd.h:531:35: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/unistd.h:644:8: error: unknown type name ‘size_t’
644 | extern size_t confstr (int __name, char *__buf, size_t __len) __THROW
| ^~~~~~
/usr/include/unistd.h:644:8: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/unistd.h:644:49: error: unknown type name ‘size_t’
644 | extern size_t confstr (int __name, char *__buf, size_t __len) __THROW
| ^~~~~~
/usr/include/unistd.h:644:49: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/unistd.h:803:46: error: unknown type name ‘size_t’
803 | extern int ttyname_r (int __fd, char *__buf, size_t __buflen)
| ^~~~~~
/usr/include/unistd.h:803:46: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/unistd.h:839:50: error: unknown type name ‘size_t’
839 | char *__restrict __buf, size_t __len)
| ^~~~~~
/usr/include/unistd.h:839:50: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/unistd.h:852:52: error: unknown type name ‘size_t’
852 | char *__restrict __buf, size_t __len)
| ^~~~~~
/usr/include/unistd.h:852:52: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/unistd.h:889:38: error: unknown type name ‘size_t’
889 | extern int getlogin_r (char *__name, size_t __name_len) __nonnull ((1))
| ^~~~~~
/usr/include/unistd.h:889:38: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/unistd.h:911:39: error: unknown type name ‘size_t’
911 | extern int gethostname (char *__name, size_t __len) __THROW __nonnull ((1))
| ^~~~~~
/usr/include/unistd.h:911:39: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/unistd.h:919:45: error: unknown type name ‘size_t’
919 | extern int sethostname (const char *__name, size_t __len)
| ^~~~~~
/usr/include/unistd.h:919:45: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/unistd.h:930:41: error: unknown type name ‘size_t’
930 | extern int getdomainname (char *__name, size_t __len)
| ^~~~~~
/usr/include/unistd.h:930:41: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/unistd.h:933:47: error: unknown type name ‘size_t’
933 | extern int setdomainname (const char *__name, size_t __len)
| ^~~~~~
/usr/include/unistd.h:933:47: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/unistd.h:950:57: error: unknown type name ‘size_t’
950 | extern int profil (unsigned short int *__sample_buffer, size_t __size,
| ^~~~~~
/usr/include/unistd.h:950:57: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/unistd.h:951:20: error: unknown type name ‘size_t’
951 | size_t __offset, unsigned int __scale)
| ^~~~~~
/usr/include/unistd.h:951:20: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/unistd.h:1201:33: error: unknown type name ‘size_t’
1201 | int getentropy (void *__buffer, size_t __length) __wur
| ^~~~~~
/usr/include/unistd.h:1201:33: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
In file included from 22975.c:28:
/usr/include/stdlib.h:98:8: error: unknown type name ‘size_t’
98 | extern size_t __ctype_get_mb_cur_max (void) __THROW __wur;
| ^~~~~~
/usr/include/stdlib.h:42:1: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
41 | # include <bits/waitstatus.h>
+++ |+#include <stddef.h>
42 |
/usr/include/stdlib.h:531:25: error: unknown type name ‘size_t’
531 | size_t __statelen) __THROW __nonnull ((2));
| ^~~~~~
/usr/include/stdlib.h:531:25: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/stdlib.h:561:25: error: unknown type name ‘size_t’
561 | size_t __statelen,
| ^~~~~~
/usr/include/stdlib.h:561:25: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/stdlib.h:661:42: error: unknown type name ‘size_t’
661 | extern void arc4random_buf (void *__buf, size_t __size)
| ^~~~~~
/usr/include/stdlib.h:661:42: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/stdlib.h:672:22: error: unknown type name ‘size_t’
672 | extern void *malloc (size_t __size) __THROW __attribute_malloc__
| ^~~~~~
/usr/include/stdlib.h:672:22: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/stdlib.h:675:22: error: unknown type name ‘size_t’
675 | extern void *calloc (size_t __nmemb, size_t __size)
| ^~~~~~
/usr/include/stdlib.h:675:22: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/stdlib.h:675:38: error: unknown type name ‘size_t’
675 | extern void *calloc (size_t __nmemb, size_t __size)
| ^~~~~~
/usr/include/stdlib.h:675:38: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/stdlib.h:683:36: error: unknown type name ‘size_t’
683 | extern void *realloc (void *__ptr, size_t __size)
| ^~~~~~
/usr/include/stdlib.h:683:36: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/stdlib.h:695:41: error: unknown type name ‘size_t’
695 | extern void *reallocarray (void *__ptr, size_t __nmemb, size_t __size)
| ^~~~~~
/usr/include/stdlib.h:695:41: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/stdlib.h:695:57: error: unknown type name ‘size_t’
695 | extern void *reallocarray (void *__ptr, size_t __nmemb, size_t __size)
| ^~~~~~
/usr/include/stdlib.h:695:57: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/stdlib.h:701:41: error: unknown type name ‘size_t’
701 | extern void *reallocarray (void *__ptr, size_t __nmemb, size_t __size)
| ^~~~~~
/usr/include/stdlib.h:701:41: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/stdlib.h:701:57: error: unknown type name ‘size_t’
701 | extern void *reallocarray (void *__ptr, size_t __nmemb, size_t __size)
| ^~~~~~
/usr/include/stdlib.h:701:57: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
In file included from /usr/include/stdlib.h:706:
/usr/include/alloca.h:32:22: error: unknown type name ‘size_t’
32 | extern void *alloca (size_t __size) __THROW;
| ^~~~~~
/usr/include/alloca.h:25:1: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
24 | #include <stddef.h>
+++ |+#include <stddef.h>
25 |
/usr/include/stdlib.h:712:22: error: unknown type name ‘size_t’
712 | extern void *valloc (size_t __size) __THROW __attribute_malloc__
| ^~~~~~
/usr/include/stdlib.h:712:22: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/stdlib.h:718:45: error: unknown type name ‘size_t’
718 | extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size)
| ^~~~~~
/usr/include/stdlib.h:718:45: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/stdlib.h:718:65: error: unknown type name ‘size_t’
718 | extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size)
| ^~~~~~
/usr/include/stdlib.h:718:65: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/stdlib.h:724:29: error: unknown type name ‘size_t’
724 | extern void *aligned_alloc (size_t __alignment, size_t __size)
| ^~~~~~
/usr/include/stdlib.h:724:29: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/stdlib.h:724:49: error: unknown type name ‘size_t’
724 | extern void *aligned_alloc (size_t __alignment, size_t __size)
| ^~~~~~
/usr/include/stdlib.h:724:49: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/stdlib.h:961:23: error: unknown type name ‘size_t’
961 | size_t __nmemb, size_t __size, __compar_fn_t __compar)
| ^~~~~~
/usr/include/stdlib.h:961:23: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/stdlib.h:961:39: error: unknown type name ‘size_t’
961 | size_t __nmemb, size_t __size, __compar_fn_t __compar)
| ^~~~~~
/usr/include/stdlib.h:961:39: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/stdlib.h:970:34: error: unknown type name ‘size_t’
970 | extern void qsort (void *__base, size_t __nmemb, size_t __size,
| ^~~~~~
/usr/include/stdlib.h:970:34: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/stdlib.h:970:50: error: unknown type name ‘size_t’
970 | extern void qsort (void *__base, size_t __nmemb, size_t __size,
| ^~~~~~
/usr/include/stdlib.h:970:50: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/stdlib.h:1044:20: error: unknown type name ‘size_t’
1044 | size_t __len) __THROW __nonnull ((3, 4, 5));
| ^~~~~~
/usr/include/stdlib.h:1044:20: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/stdlib.h:1047:20: error: unknown type name ‘size_t’
1047 | size_t __len) __THROW __nonnull ((3, 4, 5));
| ^~~~~~
/usr/include/stdlib.h:1047:20: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/stdlib.h:1051:45: error: unknown type name ‘size_t’
1051 | char *__restrict __buf, size_t __len)
| ^~~~~~
/usr/include/stdlib.h:1051:45: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/stdlib.h:1055:45: error: unknown type name ‘size_t’
1055 | char *__restrict __buf, size_t __len)
| ^~~~~~
/usr/include/stdlib.h:1055:45: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/stdlib.h:1062:36: error: unknown type name ‘size_t’
1062 | extern int mblen (const char *__s, size_t __n) __THROW;
| ^~~~~~
/usr/include/stdlib.h:1062:36: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/stdlib.h:1066:48: error: unknown type name ‘size_t’
1066 | const char *__restrict __s, size_t __n) __THROW;
| ^~~~~~
/usr/include/stdlib.h:1066:48: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/stdlib.h:1073:8: error: unknown type name ‘size_t’
1073 | extern size_t mbstowcs (wchar_t *__restrict __pwcs,
| ^~~~~~
/usr/include/stdlib.h:1073:8: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/stdlib.h:1074:53: error: unknown type name ‘size_t’
1074 | const char *__restrict __s, size_t __n) __THROW
| ^~~~~~
/usr/include/stdlib.h:1074:53: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/stdlib.h:1077:8: error: unknown type name ‘size_t’
1077 | extern size_t wcstombs (char *__restrict __s,
| ^~~~~~
/usr/include/stdlib.h:1077:8: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/stdlib.h:1078:59: error: unknown type name ‘size_t’
1078 | const wchar_t *__restrict __pwcs, size_t __n)
| ^~~~~~
/usr/include/stdlib.h:1078:59: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
In file included from /usr/include/x86_64-linux-gnu/sys/socket.h:26,
from /usr/include/netinet/in.h:23,
from /usr/include/netdb.h:27,
from 22975.c:29:
/usr/include/x86_64-linux-gnu/bits/types/struct_iovec.h:29:5: error: unknown type name ‘size_t’
29 | size_t iov_len; /* Length of data. */
| ^~~~~~
/usr/include/x86_64-linux-gnu/bits/types/struct_iovec.h:24:1: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
23 | #include <stddef.h>
+++ |+#include <stddef.h>
24 |
In file included from /usr/include/x86_64-linux-gnu/sys/socket.h:33:
/usr/include/x86_64-linux-gnu/bits/socket.h:269:5: error: unknown type name ‘size_t’
269 | size_t msg_iovlen; /* Number of elements in the vector. */
| ^~~~~~
/usr/include/x86_64-linux-gnu/bits/socket.h:182:1: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
181 | #include <bits/sockaddr.h>
+++ |+#include <stddef.h>
182 |
/usr/include/x86_64-linux-gnu/bits/socket.h:272:5: error: unknown type name ‘size_t’
272 | size_t msg_controllen; /* Ancillary data buffer length.
| ^~~~~~
/usr/include/x86_64-linux-gnu/bits/socket.h:272:5: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/x86_64-linux-gnu/bits/socket.h:283:5: error: unknown type name ‘size_t’
283 | size_t cmsg_len; /* Length of data in cmsg_data plus length
| ^~~~~~
/usr/include/x86_64-linux-gnu/bits/socket.h:283:5: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/x86_64-linux-gnu/sys/socket.h:138:51: error: unknown type name ‘size_t’
138 | extern ssize_t send (int __fd, const void *__buf, size_t __n, int __flags);
| ^~~~~~
/usr/include/x86_64-linux-gnu/sys/socket.h:37:1: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
36 | # include <bits/types/struct_osockaddr.h>
+++ |+#include <stddef.h>
37 | #endif
/usr/include/x86_64-linux-gnu/sys/socket.h:145:45: error: unknown type name ‘size_t’
145 | extern ssize_t recv (int __fd, void *__buf, size_t __n, int __flags);
| ^~~~~~
/usr/include/x86_64-linux-gnu/sys/socket.h:145:45: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/x86_64-linux-gnu/sys/socket.h:152:53: error: unknown type name ‘size_t’
152 | extern ssize_t sendto (int __fd, const void *__buf, size_t __n,
| ^~~~~~
/usr/include/x86_64-linux-gnu/sys/socket.h:152:53: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/x86_64-linux-gnu/sys/socket.h:163:60: error: unknown type name ‘size_t’
163 | extern ssize_t recvfrom (int __fd, void *__restrict __buf, size_t __n,
| ^~~~~~
/usr/include/x86_64-linux-gnu/sys/socket.h:163:60: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
In file included from /usr/include/netdb.h:32:
/usr/include/rpc/netdb.h:61:44: error: unknown type name ‘size_t’
61 | char *__buffer, size_t __buflen,
| ^~~~~~
/usr/include/rpc/netdb.h:43:1: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
42 | #include <stddef.h>
+++ |+#include <stddef.h>
43 |
/usr/include/rpc/netdb.h:65:46: error: unknown type name ‘size_t’
65 | char *__buffer, size_t __buflen,
| ^~~~~~
/usr/include/rpc/netdb.h:65:46: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/rpc/netdb.h:69:25: error: unknown type name ‘size_t’
69 | size_t __buflen, struct rpcent **__result) __THROW;
| ^~~~~~
/usr/include/rpc/netdb.h:69:25: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/netdb.h:166:50: error: unknown type name ‘size_t’
166 | char *__restrict __buf, size_t __buflen,
| ^~~~~~
/usr/include/netdb.h:41:1: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
40 | #include <bits/netdb.h>
+++ |+#include <stddef.h>
41 |
/usr/include/netdb.h:173:53: error: unknown type name ‘size_t’
173 | char *__restrict __buf, size_t __buflen,
| ^~~~~~
/usr/include/netdb.h:173:53: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/netdb.h:179:53: error: unknown type name ‘size_t’
179 | char *__restrict __buf, size_t __buflen,
| ^~~~~~
/usr/include/netdb.h:179:53: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/netdb.h:185:54: error: unknown type name ‘size_t’
185 | char *__restrict __buf, size_t __buflen,
| ^~~~~~
/usr/include/netdb.h:185:54: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/netdb.h:236:49: error: unknown type name ‘size_t’
236 | char *__restrict __buf, size_t __buflen,
| ^~~~~~
/usr/include/netdb.h:236:49: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/netdb.h:242:52: error: unknown type name ‘size_t’
242 | char *__restrict __buf, size_t __buflen,
| ^~~~~~
/usr/include/netdb.h:242:52: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/netdb.h:248:52: error: unknown type name ‘size_t’
248 | char *__restrict __buf, size_t __buflen,
| ^~~~~~
/usr/include/netdb.h:248:52: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/netdb.h:307:50: error: unknown type name ‘size_t’
307 | char *__restrict __buf, size_t __buflen,
| ^~~~~~
/usr/include/netdb.h:307:50: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/netdb.h:313:53: error: unknown type name ‘size_t’
313 | char *__restrict __buf, size_t __buflen,
| ^~~~~~
/usr/include/netdb.h:313:53: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/netdb.h:318:53: error: unknown type name ‘size_t’
318 | char *__restrict __buf, size_t __buflen,
| ^~~~~~
/usr/include/netdb.h:318:53: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/netdb.h:373:51: error: unknown type name ‘size_t’
373 | char *__restrict __buf, size_t __buflen,
| ^~~~~~
/usr/include/netdb.h:373:51: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/netdb.h:378:54: error: unknown type name ‘size_t’
378 | char *__restrict __buf, size_t __buflen,
| ^~~~~~
/usr/include/netdb.h:378:54: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/netdb.h:383:56: error: unknown type name ‘size_t’
383 | char *__restrict __buf, size_t __buflen,
| ^~~~~~
/usr/include/netdb.h:383:56: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
/usr/include/netdb.h:433:54: error: unknown type name ‘size_t’
433 | char *__restrict __buffer, size_t __buflen);
| ^~~~~~
/usr/include/netdb.h:433:54: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
22975.c: In function ‘bscann’:
22975.c:221:12: error: implicit declaration of function ‘strstr’ [-Wimplicit-function-declaration]
221 | if(strstr(chk_ban,"wu-2.6.0"))
| ^~~~~~
22975.c:30:1: note: include ‘<string.h>’ or provide a declaration of ‘strstr’
29 | #include <netdb.h>
+++ |+#include <string.h>
30 | #include <netinet/in.h>
22975.c:221:12: warning: incompatible implicit declaration of built-in function ‘strstr’ [-Wbuiltin-declaration-mismatc]
221 | if(strstr(chk_ban,"wu-2.6.0"))
| ^~~~~~
22975.c:221:12: note: include ‘<string.h>’ or provide a declaration of ‘strstr’
22975.c: In function ‘ftpd_login’:
22975.c:248:9: error: implicit declaration of function ‘memset’ [-Wimplicit-function-declaration]
248 | memset((char *)send_recv,(NRL),sizeof(send_recv));
| ^~~~~~
22975.c:248:9: note: include ‘<string.h>’ or provide a declaration of ‘memset’
22975.c:248:9: warning: incompatible implicit declaration of built-in function ‘memset’ [-Wbuiltin-declaration-mismatch]
22975.c:248:9: note: include ‘<string.h>’ or provide a declaration of ‘memset’
22975.c:249:9: error: implicit declaration of function ‘recv’ [-Wimplicit-function-declaration]
249 | recv(sock,send_recv,sizeof(send_recv)-1,(NRL));
| ^~~~
22975.c:260:13: warning: incompatible implicit declaration of built-in function ‘strstr’ [-Wbuiltin-declaration-mismatc]
260 | if(!strstr(send_recv,(FTP_CONN_SCS)))
| ^~~~~~
22975.c:260:13: note: include ‘<string.h>’ or provide a declaration of ‘strstr’
22975.c:270:9: error: implicit declaration of function ‘snprintf’ [-Wimplicit-function-declaration]
270 | snprintf(send_recv,sizeof(send_recv)-1,"USER %s\r\n",user);
| ^~~~~~~~
22975.c:30:1: note: include ‘<stdio.h>’ or provide a declaration of ‘snprintf’
29 | #include <netdb.h>
+++ |+#include <stdio.h>
30 | #include <netinet/in.h>
22975.c:270:9: warning: incompatible implicit declaration of built-in function ‘snprintf’ [-Wbuiltin-declaration-mismatch]
270 | snprintf(send_recv,sizeof(send_recv)-1,"USER %s\r\n",user);
| ^~~~~~~~
22975.c:270:9: note: include ‘<stdio.h>’ or provide a declaration of ‘snprintf’
22975.c:271:9: error: implicit declaration of function ‘send’ [-Wimplicit-function-declaration]
271 | send(sock,send_recv,strlen(send_recv),(NRL));
| ^~~~
22975.c:271:29: error: implicit declaration of function ‘strlen’ [-Wimplicit-function-declaration]
271 | send(sock,send_recv,strlen(send_recv),(NRL));
| ^~~~~~
22975.c:271:29: note: include ‘<string.h>’ or provide a declaration of ‘strlen’
22975.c:271:29: warning: incompatible implicit declaration of built-in function ‘strlen’ [-Wbuiltin-declaration-mismatc]
22975.c:271:29: note: include ‘<string.h>’ or provide a declaration of ‘strlen’
22975.c:277:13: warning: incompatible implicit declaration of built-in function ‘strstr’ [-Wbuiltin-declaration-mismatc]
277 | if(!strstr(send_recv,(FTP_USER_FAD)))
| ^~~~~~
22975.c:277:13: note: include ‘<string.h>’ or provide a declaration of ‘strstr’
22975.c:293:12: warning: incompatible implicit declaration of built-in function ‘strstr’ [-Wbuiltin-declaration-mismatc]
293 | if(strstr(send_recv,(FTP_LOGIN_FAD)))
| ^~~~~~
22975.c:293:12: note: include ‘<string.h>’ or provide a declaration of ‘strstr’
22975.c: In function ‘mkd_cwd_f’:
22975.c:317:9: warning: incompatible implicit declaration of built-in function ‘memset’ [-Wbuiltin-declaration-mismatch]
317 | memset((char *)dir_nm,(NRL),(GET_R));
| ^~~~~~
22975.c:317:9: note: include ‘<string.h>’ or provide a declaration of ‘memset’
22975.c:333:34: warning: incompatible implicit declaration of built-in function ‘strlen’ [-Wbuiltin-declaration-mismatc]
333 | send(sock,dir_nm,strlen(dir_nm),(NRL));
| ^~~~~~
22975.c:333:34: note: include ‘<string.h>’ or provide a declaration of ‘strlen’
22975.c:338:13: warning: incompatible implicit declaration of built-in function ‘strstr’ [-Wbuiltin-declaration-mismatc]
338 | if(!strstr(get_nm,(MKD_COMM_SCS))&&!strstr(get_nm,(MKD_EXIST)))
| ^~~~~~
22975.c:338:13: note: include ‘<string.h>’ or provide a declaration of ‘strstr’
22975.c:350:26: warning: incompatible implicit declaration of built-in function ‘strlen’ [-Wbuiltin-declaration-mismatc]
350 | send(sock,dir_nm,strlen(dir_nm),(NRL));
| ^~~~~~
22975.c:350:26: note: include ‘<string.h>’ or provide a declaration of ‘strlen’
22975.c:355:13: warning: incompatible implicit declaration of built-in function ‘strstr’ [-Wbuiltin-declaration-mismatc]
355 | if(!strstr(get_nm,(CWD_COMM_SCS)))
| ^~~~~~
22975.c:355:13: note: include ‘<string.h>’ or provide a declaration of ‘strstr’
22975.c:360:9: error: ‘return’ with no value, in function returning non-void [-Wreturn-mismatch]
360 | return;
| ^~~~~~
22975.c:312:5: note: declared here
312 | int mkd_cwd_f(int sock,int type,char *dir_nm,int gb_character)
| ^~~~~~~~~
22975.c: In function ‘send_shellcode’:
22975.c:368:9: warning: incompatible implicit declaration of built-in function ‘memset’ [-Wbuiltin-declaration-mismatch]
368 | memset((char *)dir_nm,(NRL),(GET_R));
| ^~~~~~
22975.c:368:9: note: include ‘<string.h>’ or provide a declaration of ‘memset’
22975.c:375:59: warning: incompatible implicit declaration of built-in function ‘strlen’ [-Wbuiltin-declaration-mismatc]
375 | for(dr_n=(cmd_f);dr_n<(DEF_VA)+sizeof(0xffffffff)+(cmd_f)-strlen(plat
| ^~~~~~
22975.c:375:59: note: include ‘<string.h>’ or provide a declaration of ‘strlen’
22975.c:380:31: warning: incompatible implicit declaration of built-in function ‘strlen’ [-Wbuiltin-declaration-mismatc]
380 | for(cmd_f=(NRL);cmd_f<strlen(plat[t_g].shellcode);cmd_f++)
| ^~~~~~
22975.c:380:31: note: include ‘<string.h>’ or provide a declaration of ‘strlen’
22975.c:389:34: warning: incompatible implicit declaration of built-in function ‘strlen’ [-Wbuiltin-declaration-mismatc]
389 | send(sock,dir_nm,strlen(dir_nm),(NRL));
| ^~~~~~
22975.c:389:34: note: include ‘<string.h>’ or provide a declaration of ‘strlen’
22975.c:394:21: warning: incompatible implicit declaration of built-in function ‘strstr’ [-Wbuiltin-declaration-mismatc]
394 | if(!strstr(get_nm,(MKD_COMM_SCS))&&!strstr(get_nm,(MKD_EXIST)))
| ^~~~~~
22975.c:394:21: note: include ‘<string.h>’ or provide a declaration of ‘strstr’
22975.c:406:26: warning: incompatible implicit declaration of built-in function ‘strlen’ [-Wbuiltin-declaration-mismatc]
406 | send(sock,dir_nm,strlen(dir_nm),(NRL));
| ^~~~~~
22975.c:406:26: note: include ‘<string.h>’ or provide a declaration of ‘strlen’
22975.c:411:13: warning: incompatible implicit declaration of built-in function ‘strstr’ [-Wbuiltin-declaration-mismatc]
411 | if(!strstr(get_nm,(CWD_COMM_SCS)))
| ^~~~~~
22975.c:411:13: note: include ‘<string.h>’ or provide a declaration of ‘strstr’
22975.c:416:9: error: ‘return’ with no value, in function returning non-void [-Wreturn-mismatch]
416 | return;
| ^~~~~~
22975.c:363:5: note: declared here
363 | int send_shellcode(int sock,int type,char *dir_nm)
| ^~~~~~~~~~~~~~
22975.c: In function ‘make_retloc’:
22975.c:491:9: warning: incompatible implicit declaration of built-in function ‘memset’ [-Wbuiltin-declaration-mismatch]
491 | memset((char *)atk_bf,(NRL),(GET_R));
| ^~~~~~
22975.c:491:9: note: include ‘<string.h>’ or provide a declaration of ‘memset’
22975.c:506:49: warning: incompatible implicit declaration of built-in function ‘strlen’ [-Wbuiltin-declaration-mismatc]
506 | for(r_rn_1=(cmd_f),r_rn_2=(NRL);r_rn_2<(DEF_VA)-strlen(home_dir)-(plat[t_g].off_st);r_rn_2++)
| ^~~~~~
22975.c:506:49: note: include ‘<string.h>’ or provide a declaration of ‘strlen’
22975.c:566:26: warning: incompatible implicit declaration of built-in function ‘strlen’ [-Wbuiltin-declaration-mismatc]
566 | send(sock,atk_bf,strlen(atk_bf),(NRL));
| ^~~~~~
22975.c:566:26: note: include ‘<string.h>’ or provide a declaration of ‘strlen’
22975.c:573:21: warning: incompatible implicit declaration of built-in function ‘strstr’ [-Wbuiltin-declaration-mismatc]
573 | if(!strstr(get_nm,(MKD_COMM_SCS))&&!strstr(get_nm,(MKD_EXIST)))
| ^~~~~~
22975.c:573:21: note: include ‘<string.h>’ or provide a declaration of ‘strstr’
22975.c:582:21: warning: incompatible implicit declaration of built-in function ‘strstr’ [-Wbuiltin-declaration-mismatc]
582 | if(!strstr(get_nm,(CWD_COMM_SCS)))
| ^~~~~~
22975.c:582:21: note: include ‘<string.h>’ or provide a declaration of ‘strstr’
22975.c:589:9: error: ‘return’ with no value, in function returning non-void [-Wreturn-mismatch]
589 | return;
| ^~~~~~
22975.c:486:5: note: declared here
486 | int make_retloc(int sock,int type,char *atk_bf,u_long sh_addr)
| ^~~~~~~~~~~
22975.c: In function ‘main’:
22975.c:628:33: warning: incompatible implicit declaration of built-in function ‘memset’ [-Wbuiltin-declaration-mismatc]
628 | memset((char *)tg_host,(NRL),sizeof(tg_host));
| ^~~~~~
22975.c:628:33: note: include ‘<string.h>’ or provide a declaration of ‘memset’
22975.c:629:33: error: implicit declaration of function ‘strncpy’ [-Wimplicit-function-declaration]
629 | strncpy(tg_host,optarg,sizeof(tg_host)-1);
| ^~~~~~~
22975.c:629:33: note: include ‘<string.h>’ or provide a declaration of ‘strncpy’
22975.c:629:33: warning: incompatible implicit declaration of built-in function ‘strncpy’ [-Wbuiltin-declaration-mismatch]
22975.c:629:33: note: include ‘<string.h>’ or provide a declaration of ‘strncpy’
22975.c:681:13: error: implicit declaration of function ‘strcmp’ [-Wimplicit-function-declaration]
681 | if(!strcmp(user_id,(DEF_STR))||!strcmp(pass_wd,(DEF_STR)))
| ^~~~~~
22975.c:681:13: note: include ‘<string.h>’ or provide a declaration of ‘strcmp’
22975.c:684:9: warning: incompatible implicit declaration of built-in function ‘memset’ [-Wbuiltin-declaration-mismatch]
684 | memset((char *)home_dir,(NRL),sizeof(home_dir));
| ^~~~~~
22975.c:684:9: note: include ‘<string.h>’ or provide a declaration of ‘memset’
22975.c:685:9: warning: incompatible implicit declaration of built-in function ‘snprintf’ [-Wbuiltin-declaration-mismatch]
685 | snprintf(home_dir,sizeof(home_dir)-1,"%s%s",(plat[t_g].home),user_id);
| ^~~~~~~~
22975.c:685:9: note: include ‘<stdio.h>’ or provide a declaration of ‘snprintf’
22975.c: In function ‘setsock’:
22975.c:819:9: error: implicit declaration of function ‘bzero’ [-Wimplicit-function-declaration]
819 | bzero(&(sxp_addr.sin_zero),(SIN_ZR_SIZE));
| ^~~~~
22975.c:819:9: warning: incompatible implicit declaration of built-in function ‘bzero’ [-Wbuiltin-declaration-mismatch]
22975.c: In function ‘conn_shell’:
22975.c:851:9: warning: incompatible implicit declaration of built-in function ‘memset’ [-Wbuiltin-declaration-mismatch]
851 | memset((char *)readbuf,(NRL),sizeof(readbuf));
| ^~~~~~
22975.c:851:9: note: include ‘<string.h>’ or provide a declaration of ‘memset’
22975.c:853:32: warning: incompatible implicit declaration of built-in function ‘strlen’ [-Wbuiltin-declaration-mismatc]
853 | send(conn_sock,command,strlen(command),(NRL));
| ^~~~~~
22975.c:853:32: note: include ‘<string.h>’ or provide a declaration of ‘strlen’
22975.c:865:30: error: implicit declaration of function ‘read’ [-Wimplicit-function-declaration]
865 | died=read(conn_sock,readbuf,sizeof(readbuf)-1);
| ^~~~
22975.c:888:36: warning: incompatible implicit declaration of built-in function ‘strstr’ [-Wbuiltin-declaration-mismatc]
888 | if(strstr(readbuf,"exit"))
| ^~~~~~
22975.c:888:36: note: include ‘<string.h>’ or provide a declaration of ‘strstr’
22975.c:890:33: error: implicit declaration of function ‘write’ [-Wimplicit-function-declaration]
890 | write(conn_sock,readbuf,died);
| ^~~~~
22975.c: In function ‘check_exp’:
22975.c:917:29: warning: incompatible implicit declaration of built-in function ‘strlen’ [-Wbuiltin-declaration-mismatc]
917 | send(sock,"X82\r\n",strlen("X82\r\n"),(NRL)); /* test packet */
| ^~~~~~
22975.c:917:29: note: include ‘<string.h>’ or provide a declaration of ‘strlen’
22975.c:919:9: warning: incompatible implicit declaration of built-in function ‘memset’ [-Wbuiltin-declaration-mismatch]
919 | memset((char *)gt_bf,(NRL),sizeof(gt_bf));
| ^~~~~~
22975.c:919:9: note: include ‘<string.h>’ or provide a declaration of ‘memset’
22975.c:922:12: warning: incompatible implicit declaration of built-in function ‘strstr’ [-Wbuiltin-declaration-mismatc]
922 | if(strstr(gt_bf,(CMD_ERROR)))
| ^~~~~~
22975.c:922:12: note: include ‘<string.h>’ or provide a declaration of ‘strstr’