#475946 net-tools: fix numeric ports handling in netstat

Package:
net-tools
Source:
net-tools
Description:
NET-3 networking toolkit
Submitter:
Mike Frysinger
Date:
2024-01-29 08:18:03 UTC
Severity:
normal
#475946#5
Date:
2008-04-14 04:57:38 UTC
From:
To:
According to the manual the option "--numeric-ports" should not
affect host resolution, but it does. All connected hosts are displayed
with numeric values instead of their FQDN.

this patch is by Mads Martin Joergensen via Gentoo:
http://bugs.gentoo.org/76756
--- a/netstat.c
+++ b/netstat.c
@@ -772,8 +772,8 @@ static void tcp_do_one(int lnr, const char *line)
 	txq = 0L;
     }
     safe_strncpy(local_addr, ap->sprint((struct sockaddr *) &localaddr,
-					flag_not), sizeof(local_addr));
-    safe_strncpy(rem_addr, ap->sprint((struct sockaddr *) &remaddr, flag_not),
+					flag_not & FLAG_NUM_HOST), sizeof(local_addr));
+    safe_strncpy(rem_addr, ap->sprint((struct sockaddr *) &remaddr, flag_not & FLAG_NUM_HOST),
 		 sizeof(rem_addr));
     if (flag_all || (flag_lst && !rem_port) || (!flag_lst && rem_port)) {
 	snprintf(buffer, sizeof(buffer), "%s",
@@ -931,7 +931,7 @@ static void udp_do_one(int lnr, const char *line)
     if (flag_all || (notnull(remaddr) && !flag_lst) || (!notnull(remaddr) && flag_lst))
     {
         safe_strncpy(local_addr, ap->sprint((struct sockaddr *) &localaddr,
-					    flag_not), sizeof(local_addr));
+					    flag_not & FLAG_NUM_HOST), sizeof(local_addr));
 	snprintf(buffer, sizeof(buffer), "%s",
 		 get_sname(htons(local_port), "udp",
 			   flag_not & FLAG_NUM_PORT));
@@ -944,7 +944,7 @@ static void udp_do_one(int lnr, const char *line)
 	snprintf(buffer, sizeof(buffer), "%s",
 		 get_sname(htons(rem_port), "udp", flag_not & FLAG_NUM_PORT));
         safe_strncpy(rem_addr, ap->sprint((struct sockaddr *) &remaddr,
-					  flag_not), sizeof(rem_addr));
+					  flag_not & FLAG_NUM_HOST), sizeof(rem_addr));
 	if ((strlen(rem_addr) + strlen(buffer)) > 22)
 	    rem_addr[22 - strlen(buffer)] = '\0';
 	strcat(rem_addr, ":");
@@ -1058,7 +1058,7 @@ static void raw_do_one(int lnr, const char *line)
 		 get_sname(htons(local_port), "raw",
 			   flag_not & FLAG_NUM_PORT));
         safe_strncpy(local_addr, ap->sprint((struct sockaddr *) &localaddr,
-					    flag_not), sizeof(local_addr));
+					    flag_not & FLAG_NUM_HOST), sizeof(local_addr));
 	if ((strlen(local_addr) + strlen(buffer)) > 22)
 	    local_addr[22 - strlen(buffer)] = '\0';
 	strcat(local_addr, ":");
@@ -1068,7 +1068,7 @@ static void raw_do_one(int lnr, const char *line)
 	snprintf(buffer, sizeof(buffer), "%s",
 		 get_sname(htons(rem_port), "raw", flag_not & FLAG_NUM_PORT));
         safe_strncpy(rem_addr, ap->sprint((struct sockaddr *) &remaddr,
-					  flag_not), sizeof(rem_addr));
+					  flag_not & FLAG_NUM_HOST), sizeof(rem_addr));
 	if ((strlen(rem_addr) + strlen(buffer)) > 22)
 	    rem_addr[22 - strlen(buffer)] = '\0';
 	strcat(rem_addr, ":");

#475946#10
Date:
2008-04-14 10:53:07 UTC
From:
To:
merge 197282 475946
merge 222324 475948

# 475947 contains an updated version of this patch from the same guy.
merge 294252 475947
tag   294252 patch

found 222209 1.60-19
tag   222209 confirmed
thanks

Hi Mike,

Thanks for forwarding these bugs.  Could you comment on the first
patch supplied to #222324?

Thanks,
Justin