cfg.mk: Add checks for 'caddr_t'.
Collin Funk <[email protected]> Sun, 5 May 2024 19:13:27 -0700
| Newsgroups | gmane.comp.gnu.inetutils.bugs |
|---|---|
| Message-ID | <[email protected]> |
There are some uses of 'caddr_t' in Inetutils. This is a prehistoric
BSD type. I think it was because early versions of C didn't
automatically convert 'void *' to the appropriate type.
On GNU/Linux:
$ grep -Er 'caddr_t;' /usr/include/
/usr/include/asm-generic/posix_types.h:typedef char * __kernel_caddr_t;
/usr/include/linux/coda.h:typedef void * caddr_t;
/usr/include/bits/types.h:typedef char *__caddr_t;
/usr/include/sys/types.h:typedef __caddr_t caddr_t;
/usr/include/X11/Xw32defs.h:typedef char *caddr_t;
/usr/include/X11/Xw32defs.h:typedef char *caddr_t;
/usr/include/tirpc/rpc/types.h:typedef __caddr_t caddr_t;
Patch 0001 adds a syntax check for this type and patch 0002 removes
it's uses since this type is not standardized.
I think it would be nice continue removing old C stuff like this.
Another example is 'index' vs 'strchr' and 'rindex' vs 'strrchr'.
That stuff probably hinders portability more than it helps as the
years go on. :)
Collin
0001-cfg.mk-Add-checks-for-caddr_t.patch
(text/x-patch, 871 B)
From 17afd1df789db615f9a6867688a54e18b8e2f316 Mon Sep 17 00:00:00 2001 From: Collin Funk <[email protected]> Date: Sun, 5 May 2024 18:26:21 -0700 Subject: [PATCH 1/2] cfg.mk: Add checks for 'caddr_t'. * cfg.mk (sc_bsd_caddr): New rule to check for use of the 'caddr_t' type. This is an old BSD type representing a 'void *' or similar. --- cfg.mk | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/cfg.mk b/cfg.mk index 1be7e6f9..2966ea15 100644 --- a/cfg.mk +++ b/cfg.mk @@ -90,6 +90,11 @@ sc_unsigned_int: halt='don'\''t use u''_int; instead use unsigned int' \ $(_sc_search_regexp) +sc_bsd_caddr: + @prohibit=caddr''_t \ + halt='don'\''t use caddr''_t; instead use a standard pointer' \ + $(_sc_search_regexp) + sc_assignment_in_if: prohibit='\<if *\(.* = ' halt="don't use assignments in if statements" \ $(_sc_search_regexp) -- 2.45.0
0002-Fix-sc_bsd_caddr-checks.patch
(text/x-patch, 2.3 KB)
From ab637a79ad2efe9285d301f23c91eb38185b4344 Mon Sep 17 00:00:00 2001 From: Collin Funk <[email protected]> Date: Sun, 5 May 2024 18:47:17 -0700 Subject: [PATCH 2/2] Fix sc_bsd_caddr checks. * libinetutils/if_index.c (if_nameindex): Don't cast non-void pointer arithmetic. * ftp/ftp.c (hookup): Don't cast pointers to memmove and memset. * src/inetd.c (getconfigent): Likewise. * telnet/commands.c (tn): Likewise. --- ftp/ftp.c | 2 +- libinetutils/if_index.c | 2 +- src/inetd.c | 4 ++-- telnet/commands.c | 3 +-- 4 files changed, 5 insertions(+), 6 deletions(-) diff --git a/ftp/ftp.c b/ftp/ftp.c index ca0eae6e..74232afc 100644 --- a/ftp/ftp.c +++ b/ftp/ftp.c @@ -219,7 +219,7 @@ hookup (char *host, int port) sizeof (timeout)); ctladdrlen = ai->ai_addrlen; - memmove ((caddr_t) & hisctladdr, ai->ai_addr, ai->ai_addrlen); + memmove (&hisctladdr, ai->ai_addr, ai->ai_addrlen); break; } /* for (ai = ai->ai_next) */ diff --git a/libinetutils/if_index.c b/libinetutils/if_index.c index ac1f27a8..3b8c4307 100644 --- a/libinetutils/if_index.c +++ b/libinetutils/if_index.c @@ -125,7 +125,7 @@ if_nameindex (void) i = 0; ifr = (struct ifreq *) ifc.ifc_req; - end = (struct ifreq *) ((caddr_t) ifr + ifc.ifc_len); + end = (struct ifreq *) (ifr + ifc.ifc_len); while (ifr < end) { cur = ifr; diff --git a/src/inetd.c b/src/inetd.c index 2d2bd52d..aa7be731 100644 --- a/src/inetd.c +++ b/src/inetd.c @@ -994,13 +994,13 @@ getconfigent (FILE *fconfig, const char *file, size_t *line) if (serv_node) return next_node_sep (sep); - memset ((caddr_t) sep, 0, sizeof *sep); + memset (sep, 0, sizeof *sep); while (1) { argcv_free (argc, argv); freeconfig (sep); - memset ((caddr_t) sep, 0, sizeof *sep); + memset (sep, 0, sizeof *sep); do { diff --git a/telnet/commands.c b/telnet/commands.c index 1288fdbd..2212c7f3 100644 --- a/telnet/commands.c +++ b/telnet/commands.c @@ -2820,8 +2820,7 @@ tn (int argc, char *argv[]) errno = oerrno; perror ((char *) 0); host->h_addr_list++; - memmove ((caddr_t) & sin.sin_addr, - host->h_addr_list[0], host->h_length); + memmove (&sin.sin_addr, host->h_addr_list[0], host->h_length); close (net); continue; } -- 2.45.0