if you write regress ill happily take them try to make a few for regular and tls connections and failures
On Saturday, 28 May 2016, attila <[email protected]> wrote: > > Bob Beck <[email protected] <javascript:;>> writes: > > >> Hi tech@, > >> > >> I just ran into this while fiddling with some netcat-based plumbing. > >> When I connect to the specified socket from another shell, the > >> listening nc dies if it is AF_UNIX: > >> > >> $ tail -10f /var/log/messages | nc -vkU -l ~/.xlog_socket > >> nc: getnameinfo: Invalid argument > >> > >> The attached patch fixes the issue: > >> > >> $ tail -10f /var/log/messages | \ > >> /usr/obj/usr.bin/nc/nc -vkU -l ~/.xlog_socket > >> Connection on /home/attila/.xlog_socket received! > >> > >> Feedback, comments most welcome. > >> > >> Pax, -A > > > > How's this instead for you.. (Inspired by your diff.. thanks) > > > > Preferable to my patch. Thanks for looking at it! > > Also: I noticed there are no regression tests for netcat, so I'm > writing one at least to test this case. Any requests or thoughts on > others? I have a couple obvious ideas, input most welcome. > > > Index: netcat.c > > =================================================================== > > RCS file: /cvs/src/usr.bin/nc/netcat.c,v > > retrieving revision 1.150 > > diff -u -p -u -p -r1.150 netcat.c > > --- netcat.c 4 Jan 2016 02:18:31 -0000 1.150 > > +++ netcat.c 28 May 2016 17:32:01 -0000 > > @@ -133,7 +133,7 @@ int unix_listen(char *); > > void set_common_sockopts(int, int); > > int map_tos(char *, int *); > > int map_tls(char *, int *); > > -void report_connect(const struct sockaddr *, socklen_t); > > +void report_connect(const struct sockaddr *, socklen_t, char *); > > void report_tls(struct tls *tls_ctx, char * host, char *tls_expectname); > > void usage(int); > > ssize_t drainbuf(int, unsigned char *, size_t *, struct tls *); > > @@ -516,7 +516,7 @@ main(int argc, char *argv[]) > > err(1, "connect"); > > > > if (vflag) > > - report_connect((struct sockaddr > *)&z, len); > > + report_connect((struct sockaddr > *)&z, len, NULL); > > > > readwrite(s, NULL); > > } else { > > @@ -528,7 +528,8 @@ main(int argc, char *argv[]) > > err(1, "accept"); > > } > > if (vflag) > > - report_connect((struct sockaddr > *)&cliaddr, len); > > + report_connect((struct sockaddr > *)&cliaddr, len, > > + family == AF_UNIX ? host : > NULL); > > if ((usetls) && > > (tls_cctx = tls_setup_server(tls_ctx, > connfd, host))) > > readwrite(connfd, tls_cctx); > > @@ -1487,12 +1488,17 @@ report_tls(struct tls * tls_ctx, char * > > } > > > > void > > -report_connect(const struct sockaddr *sa, socklen_t salen) > > +report_connect(const struct sockaddr *sa, socklen_t salen, char *path) > > { > > char remote_host[NI_MAXHOST]; > > char remote_port[NI_MAXSERV]; > > int herr; > > int flags = NI_NUMERICSERV; > > + > > + if (path != NULL) { > > + fprintf(stderr, "Connection on %s received!\n", path); > > + return; > > + } > > > > if (nflag) > > flags |= NI_NUMERICHOST; > > Pax, -A > -- > http://haqistan.net/~attila | [email protected] <javascript:;> | > 0x62A729CF > >
