Michael McConville wrote: > Theo de Raadt wrote: > > Please KNF. > > > > case 90: > > return "Succeeded"; > > case 91: > > > > etc. > > New diff:
Thoughts, anyone? > Index: socks.c > =================================================================== > RCS file: /cvs/src/usr.bin/nc/socks.c,v > retrieving revision 1.21 > diff -u -p -r1.21 socks.c > --- socks.c 26 Mar 2015 21:19:51 -0000 1.21 > +++ socks.c 1 Dec 2015 02:59:57 -0000 > @@ -122,6 +122,58 @@ getproxypass(const char *proxyuser, cons > return (pw); > } > > +/* > + * Error strings adapted from the generally accepted SOCKSv4 spec: > + * > + * http://ftp.icm.edu.pl/packages/socks/socks4/SOCKS4.protocol > + */ > +static const char * > +socks4_strerror(int e) > +{ > + switch (e) { > + case 90: > + return "Succeeded"; > + case 91: > + return "Request rejected or failed"; > + case 92: > + return "SOCKS server cannot connect to identd on the client"; > + case 93: > + return "Client program and identd report different user-ids"; > + default: > + return "Unknown error"; > + } > +} > + > +/* > + * Error strings taken almost directly from RFC 1928. > + */ > +static const char * > +socks5_strerror(int e) > +{ > + switch (e) { > + case 0: > + return "Succeeded"; > + case 1: > + return "General SOCKS server failure"; > + case 2: > + return "Connection not allowed by ruleset"; > + case 3: > + return "Network unreachable"; > + case 4: > + return "Host unreachable"; > + case 5: > + return "Connection refused"; > + case 6: > + return "TTL expired"; > + case 7: > + return "Command not supported"; > + case 8: > + return "Address type not supported"; > + default: > + return "Unknown error"; > + } > +} > + > int > socks_connect(const char *host, const char *port, > struct addrinfo hints __attribute__ ((__unused__)), > @@ -225,8 +277,10 @@ socks_connect(const char *host, const ch > cnt = atomicio(read, proxyfd, buf, 4); > if (cnt != 4) > err(1, "read failed (%zu/4)", cnt); > - if (buf[1] != 0) > - errx(1, "connection failed, SOCKS error %d", buf[1]); > + if (buf[1] != 0) { > + errx(1, "connection failed, SOCKS error: %s", > + socks5_strerror(buf[1])); > + } > switch (buf[3]) { > case SOCKS_IPV4: > cnt = atomicio(read, proxyfd, buf + 4, 6); > @@ -261,8 +315,10 @@ socks_connect(const char *host, const ch > cnt = atomicio(read, proxyfd, buf, 8); > if (cnt != 8) > err(1, "read failed (%zu/8)", cnt); > - if (buf[1] != 90) > - errx(1, "connection failed, SOCKS error %d", buf[1]); > + if (buf[1] != 90) { > + errx(1, "connection failed, SOCKS error: %s", > + socks4_strerror(buf[1])); > + } > } else if (socksv == -1) { > /* HTTP proxy CONNECT */ > >
