Bug#1075083: ident2: ftbfs with GCC-14
Control: tags -1 + patch
I tested, and the problem is that gcc-14 how report an error when 'int'
is used instead of the proper 'socklen_t' type, at least on
architectures where socklen_t is not int but unsigned int. :)
The following patch should solve the issue:
--- ident2-1.07.orig/common.c
+++ ident2-1.07/common.c
@@ -209,7 +209,8 @@ _send_random_reply (cl_t *cl)
static cl_t *
_new_cl (int sd, char *line)
{
- int uid, ssiz = sizeof (struct sockaddr);
+ int uid;
+ socklen_t ssiz = sizeof (struct sockaddr);
cl_t *p, cl;
char *s;
--- ident2-1.07.orig/daemon.c
+++ ident2-1.07/daemon.c
@@ -83,7 +83,7 @@ static void
declient (int s)
{
struct sockaddr sin;
- int ss = sizeof (sin);
+ socklen_t ss = sizeof (sin);
close (accept (s, (struct sockaddr *)&sin, &ss));
}
@@ -94,7 +94,7 @@ static void _sig_ign (int s) { return; }
static int
_accept_connect (int sv, struct sockaddr_in *sin)
{
- size_t sl = sizeof (struct sockaddr_in);
+ socklen_t sl = sizeof (struct sockaddr_in);
int cl;
while ((cl = accept(sv, (struct sockaddr *)sin, &sl)) == -1) {
--- ident2-1.07.orig/ident2.c
+++ ident2-1.07/ident2.c
@@ -49,10 +49,10 @@ static int
inetd_child (void)
{
struct sockaddr_in sin;
- int sinsize = sizeof (struct sockaddr_in);
+ socklen_t sinsize = sizeof (struct sockaddr_in);
/* if child of inetd, 0 would be a socket */
- if (getsockname (0, (struct sockaddr *)&sin, (int *)&sinsize) == -1) {
+ if (getsockname (0, (struct sockaddr *)&sin, &sinsize) == -1) {
if (errno == ENOTSOCK)
return 0; /* must be a filedescriptor */
else {
--
Happy hacking
Petter Reinholdtsen
Reply to: