[NETSTAT] Formatting; use _wsystem() call; do not hardcode buffer lengths.

This commit is contained in:
Hermès Bélusca-Maïto 2019-06-29 17:05:43 +02:00
parent f6f66fa987
commit ab7dc56d6c
No known key found for this signature in database
GPG key ID: 3B2539C65E7B93D0
2 changed files with 40 additions and 41 deletions

View file

@ -176,8 +176,7 @@ BOOL DisplayOutput(VOID)
if (bDoShowRouteTable) if (bDoShowRouteTable)
{ {
/* mingw doesn't have lib for _tsystem */ if (_wsystem(L"route print") == -1)
if (system("route print") == -1)
{ {
ConResPuts(StdErr, IDS_ERROR_ROUTE); ConResPuts(StdErr, IDS_ERROR_ROUTE);
return EXIT_FAILURE; return EXIT_FAILURE;
@ -195,36 +194,36 @@ BOOL DisplayOutput(VOID)
{ {
switch (Protocol) switch (Protocol)
{ {
case IP: case IP:
if (bDoShowProtoStats) if (bDoShowProtoStats)
{ {
ShowIpStatistics(); ShowIpStatistics();
return EXIT_SUCCESS; return EXIT_SUCCESS;
} }
break; break;
case ICMP: case ICMP:
if (bDoShowProtoStats) if (bDoShowProtoStats)
{ {
ShowIcmpStatistics(); ShowIcmpStatistics();
return EXIT_SUCCESS; return EXIT_SUCCESS;
} }
break; break;
case TCP: case TCP:
if (bDoShowProtoStats) if (bDoShowProtoStats)
ShowTcpStatistics(); ShowTcpStatistics();
ConResPuts(StdOut, IDS_ACTIVE_CONNECT); ConResPuts(StdOut, IDS_ACTIVE_CONNECT);
DisplayTableHeader(); DisplayTableHeader();
ShowTcpTable(); ShowTcpTable();
break; break;
case UDP: case UDP:
if (bDoShowProtoStats) if (bDoShowProtoStats)
ShowUdpStatistics(); ShowUdpStatistics();
ConResPuts(StdOut, IDS_ACTIVE_CONNECT); ConResPuts(StdOut, IDS_ACTIVE_CONNECT);
DisplayTableHeader(); DisplayTableHeader();
ShowUdpTable(); ShowUdpTable();
break; break;
default : default:
break; break;
} }
} }
else if (bDoShowProtoStats) else if (bDoShowProtoStats)
@ -458,8 +457,8 @@ VOID ShowTcpTable(VOID)
|| (tcpTable->table[i].dwState == MIB_TCP_STATE_TIME_WAIT)) || (tcpTable->table[i].dwState == MIB_TCP_STATE_TIME_WAIT))
{ {
/* I've split this up so it's easier to follow */ /* I've split this up so it's easier to follow */
GetIpHostName(TRUE, tcpTable->table[i].dwLocalAddr, HostIp, HOSTNAMELEN); GetIpHostName(TRUE, tcpTable->table[i].dwLocalAddr, HostIp, sizeof(HostIp));
GetPortName(tcpTable->table[i].dwLocalPort, "tcp", HostPort, PORTNAMELEN); GetPortName(tcpTable->table[i].dwLocalPort, "tcp", HostPort, sizeof(HostPort));
sprintf(Host, "%s:%s", HostIp, HostPort); sprintf(Host, "%s:%s", HostIp, HostPort);
if (tcpTable->table[i].dwState == MIB_TCP_STATE_LISTEN) if (tcpTable->table[i].dwState == MIB_TCP_STATE_LISTEN)
@ -468,8 +467,8 @@ VOID ShowTcpTable(VOID)
} }
else else
{ {
GetIpHostName(FALSE, tcpTable->table[i].dwRemoteAddr, RemoteIp, HOSTNAMELEN); GetIpHostName(FALSE, tcpTable->table[i].dwRemoteAddr, RemoteIp, sizeof(RemoteIp));
GetPortName(tcpTable->table[i].dwRemotePort, "tcp", RemotePort, PORTNAMELEN); GetPortName(tcpTable->table[i].dwRemotePort, "tcp", RemotePort, sizeof(RemotePort));
sprintf(Remote, "%s:%s", RemoteIp, RemotePort); sprintf(Remote, "%s:%s", RemoteIp, RemotePort);
} }
@ -522,8 +521,8 @@ VOID ShowUdpTable(VOID)
{ {
/* I've split this up so it's easier to follow */ /* I've split this up so it's easier to follow */
GetIpHostName(TRUE, udpTable->table[i].dwLocalAddr, HostIp, HOSTNAMELEN); GetIpHostName(TRUE, udpTable->table[i].dwLocalAddr, HostIp, sizeof(HostIp));
GetPortName(udpTable->table[i].dwLocalPort, "tcp", HostPort, PORTNAMELEN); GetPortName(udpTable->table[i].dwLocalPort, "tcp", HostPort, sizeof(HostPort));
sprintf(Host, "%s:%s", HostIp, HostPort); sprintf(Host, "%s:%s", HostIp, HostPort);
@ -567,7 +566,7 @@ GetPortName(UINT Port, PCSTR Proto, CHAR Name[], INT NameLen)
* convert addresses into dotted decimal or hostname * convert addresses into dotted decimal or hostname
*/ */
PCHAR PCHAR
GetIpHostName(BOOL Local, UINT IpAddr, CHAR Name[], int NameLen) GetIpHostName(BOOL Local, UINT IpAddr, CHAR Name[], INT NameLen)
{ {
// struct hostent *phostent; // struct hostent *phostent;
UINT nIpAddr; UINT nIpAddr;

View file

@ -51,5 +51,5 @@ VOID ShowUdpStatistics(VOID);
VOID ShowEthernetStatistics(VOID); VOID ShowEthernetStatistics(VOID);
VOID ShowTcpTable(VOID); VOID ShowTcpTable(VOID);
VOID ShowUdpTable(VOID); VOID ShowUdpTable(VOID);
PCHAR GetPortName(UINT Port, PCSTR Proto, CHAR Name[PORTNAMELEN], INT NameLen); PCHAR GetPortName(UINT Port, PCSTR Proto, CHAR Name[], INT NameLen);
PCHAR GetIpHostName(BOOL local, UINT ipaddr, CHAR name[HOSTNAMELEN], int namelen); PCHAR GetIpHostName(BOOL Local, UINT IpAddr, CHAR Name[], INT NameLen);