From bbac7c19e50bcfcdc20cd848ce53e3e7e6929ce0 Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Wed, 20 Sep 2023 14:02:05 +0200 Subject: [PATCH] tftpd: always use curl's own tftp.h MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Using the system's provided arpa/tftp.h and optimizing, GCC 12 detects and reports a stringop-overread warning: tftpd.c: In function ‘write_behind.isra’: tftpd.c:485:12: warning: ‘write’ reading between 1 and 2147483647 bytes from a region of size 0 [-Wstringop-overread] 485 | return write(test->ofile, writebuf, count); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from tftpd.c:71: /usr/include/arpa/tftp.h:58:30: note: source object ‘tu_data’ of size 0 58 | char tu_data[0]; /* data or error string */ | ^~~~~~~ This occurs because writebuf points to this field and the latter cannot be considered as being of dynamic length because it is not the last field in the structure. Thus it is bound to its declared size. This commit always uses curl's own version of tftp.h where the target field is last in its structure, effectively avoiding the warning. As HAVE_ARPA_TFTP_H is not used anymore, cmake/configure checks for arpa/tftp.h are removed. Closes #11897 --- CMake/Platforms/WindowsCache.cmake | 1 - CMakeLists.txt | 1 - configure.ac | 1 - lib/curl_config.h.cmake | 3 --- tests/server/tftpd.c | 6 +----- 5 files changed, 1 insertion(+), 11 deletions(-) diff --git a/CMake/Platforms/WindowsCache.cmake b/CMake/Platforms/WindowsCache.cmake index 44a1fc9699..6a8756623f 100644 --- a/CMake/Platforms/WindowsCache.cmake +++ b/CMake/Platforms/WindowsCache.cmake @@ -53,7 +53,6 @@ if(NOT UNIX) set(HAVE_LIBZ 0) set(HAVE_ARPA_INET_H 0) - set(HAVE_ARPA_TFTP_H 0) set(HAVE_FCNTL_H 1) set(HAVE_IFADDRS_H 0) set(HAVE_IO_H 1) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1a2e08d7fd..45838483c5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1035,7 +1035,6 @@ check_include_file_concat("sys/un.h" HAVE_SYS_UN_H) check_include_file_concat("sys/utime.h" HAVE_SYS_UTIME_H) check_include_file_concat("sys/xattr.h" HAVE_SYS_XATTR_H) check_include_file_concat("arpa/inet.h" HAVE_ARPA_INET_H) -check_include_file_concat("arpa/tftp.h" HAVE_ARPA_TFTP_H) check_include_file_concat("fcntl.h" HAVE_FCNTL_H) check_include_file_concat("idn2.h" HAVE_IDN2_H) check_include_file_concat("ifaddrs.h" HAVE_IFADDRS_H) diff --git a/configure.ac b/configure.ac index 15fbda12ad..a2c8e2ee3a 100644 --- a/configure.ac +++ b/configure.ac @@ -3443,7 +3443,6 @@ AC_CHECK_HEADERS( libgen.h \ locale.h \ stdbool.h \ - arpa/tftp.h \ sys/filio.h \ sys/wait.h \ setjmp.h, diff --git a/lib/curl_config.h.cmake b/lib/curl_config.h.cmake index 65901a2b1d..328a77d733 100644 --- a/lib/curl_config.h.cmake +++ b/lib/curl_config.h.cmake @@ -162,9 +162,6 @@ /* Define to 1 if you have the header file. */ #cmakedefine HAVE_ARPA_INET_H 1 -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_ARPA_TFTP_H 1 - /* Define to 1 if you have _Atomic support. */ #cmakedefine HAVE_ATOMIC 1 diff --git a/tests/server/tftpd.c b/tests/server/tftpd.c index 8bcd452d04..8db82ff233 100644 --- a/tests/server/tftpd.c +++ b/tests/server/tftpd.c @@ -67,11 +67,6 @@ #ifdef HAVE_ARPA_INET_H #include #endif -#ifdef HAVE_ARPA_TFTP_H -#include -#else -#include "tftp.h" -#endif #ifdef HAVE_NETDB_H #include #endif @@ -97,6 +92,7 @@ #include "getpart.h" #include "util.h" #include "server_sockaddr.h" +#include "tftp.h" /* include memdebug.h last */ #include "memdebug.h" -- 2.47.2