Hi Mark,
Mark Lumsden wrote on Thu, Sep 23, 2010 at 07:38:00AM +0000:
> Add a check to the user supplied value of the local port.
[...]
> ok?
No, not ok; i think the patch is incorrect.
The pflag is passed to getaddrinfo(3):
int
getaddrinfo(const char *hostname, const char *servname, const struct
addrinfo *hints, struct addrinfo **res);
The servname is either a decimal port number or a service name
listed in services(5).
Thus, no input validation is desirable.
In fact, nc(1) already provides a (well, moderately) useful error
message when you provide a service not listed in services(5):
schwa...@rhea $ nc -p murks localhost 30000
nc: getaddrinfo: service not supported for ai_socktype
Yours,
Ingo
> Index: netcat.c
> ===================================================================
> RCS file: /cvs/src/usr.bin/nc/netcat.c,v
> retrieving revision 1.98
> diff -u -p -r1.98 netcat.c
> --- netcat.c 3 Jul 2010 04:44:51 -0000 1.98
> +++ netcat.c 23 Sep 2010 07:13:51 -0000
> @@ -174,6 +174,9 @@ main(int argc, char *argv[])
> Pflag = optarg;
> break;
> case 'p':
> + strtonum(optarg, 1, PORT_MAX, &errstr);
> + if (errstr)
> + errx(1, "source port %s: %s", errstr, optarg);
> pflag = optarg;
> break;
> case 'r':