On Sun, Jan 05, 2020 at 06:41:08PM +0100, Alexander Bluhm wrote:
> When using netcat with the options -Uuvs I get:
> netcat-regress: getnameinfo: Invalid argument

Correction, -U -u -n -v -l triggers the bug.  -U -u -v -l gives:

netcat-regress: getnameinfo: ai_family not supported

My diff fixes both.

> Index: usr.bin/nc/netcat.c
> ===================================================================
> RCS file: /data/mirror/openbsd/cvs/src/usr.bin/nc/netcat.c,v
> retrieving revision 1.212
> diff -u -p -r1.212 netcat.c
> --- usr.bin/nc/netcat.c       17 Nov 2019 17:38:33 -0000      1.212
> +++ usr.bin/nc/netcat.c       5 Jan 2020 17:26:07 -0000
> @@ -597,7 +597,8 @@ main(int argc, char *argv[])
>
>                               if (vflag)
>                                       report_sock("Connection received",
> -                                         (struct sockaddr *)&z, len, NULL);
> +                                         (struct sockaddr *)&z, len,
> +                                         family == AF_UNIX ? host : NULL);
>
>                               readwrite(s, NULL);
>                       } else {
> @@ -1784,11 +1785,14 @@ report_sock(const char *msg, const struc
>       if (nflag)
>               flags |= NI_NUMERICHOST;
>
> -     if ((herr = getnameinfo(sa, salen, host, sizeof(host),
> -         port, sizeof(port), flags)) != 0) {
> -             if (herr == EAI_SYSTEM)
> +     herr = getnameinfo(sa, salen, host, sizeof(host), port, sizeof(port),
> +         flags);
> +     switch (herr) {
> +             case 0:
> +                     break;
> +             case EAI_SYSTEM:
>                       err(1, "getnameinfo");
> -             else
> +             default:
>                       errx(1, "getnameinfo: %s", gai_strerror(herr));
>       }
>

Reply via email to