nc: skip connection info on failed or skipped udptest()
authortb <tb@openbsd.org>
Sun, 18 Dec 2022 12:53:18 +0000 (12:53 +0000)
committertb <tb@openbsd.org>
Sun, 18 Dec 2022 12:53:18 +0000 (12:53 +0000)
In udp mode, nc would always print that the connected succeeded
independently of whether that was actually the case. Don't do that.

idea/ok mpf

usr.bin/nc/netcat.c

index dc60158..3ee1670 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: netcat.c,v 1.223 2022/12/18 12:51:10 tb Exp $ */
+/* $OpenBSD: netcat.c,v 1.224 2022/12/18 12:53:18 tb Exp $ */
 /*
  * Copyright (c) 2001 Eric Jackson <ericj@monkey.org>
  * Copyright (c) 2015 Bob Beck.  All rights reserved.
@@ -700,16 +700,19 @@ main(int argc, char *argv[])
 
                        ret = 0;
                        if (vflag || zflag) {
+                               int print_info = 1;
+
                                /* For UDP, make sure we are connected. */
                                if (uflag) {
-                                       if (udptest(s) == -1) {
+                                       /* No info on failed or skipped test. */
+                                       if ((print_info = udptest(s)) == -1) {
                                                ret = 1;
                                                continue;
                                        }
                                }
-
-                               connection_info(host, portlist[i],
-                                   uflag ? "udp" : "tcp", ipaddr);
+                               if (print_info == 1)
+                                       connection_info(host, portlist[i],
+                                           uflag ? "udp" : "tcp", ipaddr);
                        }
                        if (Fflag)
                                fdpass(s);