Package: release.debian.org Severity: normal User: release.debian....@packages.debian.org Usertags: unblock
Please unblock package netcat-openbsd Since 1.110 nc(1) no longer shutdown network sockets when stdin closes. This is a deliberate upstream decision, which can be reverted with the new ‘-N’ flag [0]. For better compatibility with GNU netcat we've added a quit timer (defaulting to -q0 since 1.89-4) to quit immediately after EOF. However our patch wasn't modified properly, and the upstream's new behavior with respect to shutdown(2) lead to a regression in 1.130-1 and 1.130-2. I'd like to upload 1.130-3 to Stretch as the regression affects libvirt and QEMU users which use nc(1) to talk to remote hypervisor sockets, cf. #854292. Since 1.130-3 nc(1) defaults to ‘-q-1’ (matching upstream's behavior), and ‘-q0’ is a mere alias for ‘-N’ (it was a no-op before). Furthermore the new patch is also simpler, so we're reducing our delta with upstream :-). Debdiff enclosed. unblock netcat-openbsd/1.130-3 -- Guilhem. [0] http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/nc/netcat.c?rev=1.111&content-type=text/x-cvsweb-markup [1] https://anonscm.debian.org/cgit/collab-maint/netcat-openbsd.git/tree/debian/patches/0005-quit-timer.patch
diff -Nru netcat-openbsd-1.130/debian/changelog netcat-openbsd-1.130/debian/changelog --- netcat-openbsd-1.130/debian/changelog 2017-01-26 09:51:13.000000000 +0100 +++ netcat-openbsd-1.130/debian/changelog 2017-03-06 09:48:36.000000000 +0100 @@ -1,3 +1,12 @@ +netcat-openbsd (1.130-3) unstable; urgency=medium + + * Change defaults from "-q0" to "-q-1" to match upstream defaults since the + introduction of flag "-N" in version 1.110. Passing a non-negative value + to "-q" now implies "-N"; in particular, "-q0" is now a mere alias for + "-N". (Closes: #854292) + + -- Guilhem Moulin <guil...@guilhem.org> Fri, 03 Mar 2017 20:32:55 +0100 + netcat-openbsd (1.130-2) unstable; urgency=medium * Fix handling of delayed exit option (Closes: #849192, LP: #1656785) diff -Nru netcat-openbsd-1.130/debian/patches/0005-quit-timer.patch netcat-openbsd-1.130/debian/patches/0005-quit-timer.patch --- netcat-openbsd-1.130/debian/patches/0005-quit-timer.patch 2017-01-26 09:51:13.000000000 +0100 +++ netcat-openbsd-1.130/debian/patches/0005-quit-timer.patch 2017-03-06 09:45:02.000000000 +0100 @@ -19,14 +19,19 @@ .Op Fl s Ar source .Op Fl T Ar toskeyword .Op Fl V Ar rtable -@@ -171,6 +172,10 @@ Proxy authentication is only supported for HTTP CONNECT proxies at present. +@@ -171,6 +172,15 @@ Proxy authentication is only supported for HTTP CONNECT proxies at present. Specifies the source port .Nm should use, subject to privilege restrictions and availability. +.It Fl q Ar seconds -+after EOF on stdin, wait the specified number of seconds and then quit. If ++after EOF on stdin, wait the specified number of +.Ar seconds -+is negative, wait forever. ++and then quit. If ++.Ar seconds ++is negative, wait forever (default). Specifying a non-negative ++.Ar seconds ++implies ++.Fl N . .It Fl r Specifies that source and/or destination ports should be chosen randomly instead of sequentially within a range or in the order that the system @@ -38,21 +43,20 @@ int nflag; /* Don't do name look up */ char *Pflag; /* Proxy username */ char *pflag; /* Localport flag */ -+int qflag = 0; /* Quit after some secs */ ++int qflag = -1; /* Quit after some secs */ int rflag; /* Random ports flag */ char *sflag; /* Source Address */ int tflag; /* Telnet Emulation */ -@@ -171,6 +172,9 @@ ssize_t fillbuf(int, unsigned char *, size_t *); +@@ -171,6 +172,8 @@ ssize_t fillbuf(int, unsigned char *, size_t *); static int connect_with_timeout(int fd, const struct sockaddr *sa, socklen_t salen, int ctimeout); -+int quit_fd = -1; +static void quit(); + int main(int argc, char *argv[]) { -@@ -195,7 +199,7 @@ main(int argc, char *argv[]) +@@ -195,7 +198,7 @@ main(int argc, char *argv[]) signal(SIGPIPE, SIG_IGN); while ((ch = getopt(argc, argv, @@ -61,7 +65,7 @@ switch (ch) { case '4': family = AF_INET; -@@ -248,6 +252,11 @@ main(int argc, char *argv[]) +@@ -248,6 +251,13 @@ main(int argc, char *argv[]) case 'p': pflag = optarg; break; @@ -69,49 +73,43 @@ + qflag = strtonum(optarg, INT_MIN, INT_MAX, &errstr); + if (errstr) + errx(1, "quit timer %s: %s", errstr, optarg); ++ if (qflag >= 0) ++ Nflag = 1; + break; case 'r': rflag = 1; break; -@@ -917,19 +926,31 @@ readwrite(int net_fd) - /* both inputs are gone, buffers are empty, we are done */ +@@ -918,18 +928,26 @@ readwrite(int net_fd) if (pfd[POLL_STDIN].fd == -1 && pfd[POLL_NETIN].fd == -1 && stdinbufpos == 0 && netinbufpos == 0) { -- close(net_fd); + close(net_fd); - return; -+ if (qflag == 0) { -+ close(net_fd); ++ if (qflag <= 0) + return; -+ } + goto delay_exit; } /* both outputs are gone, we can't continue */ if (pfd[POLL_NETOUT].fd == -1 && pfd[POLL_STDOUT].fd == -1) { -- close(net_fd); + close(net_fd); - return; -+ if (qflag == 0) { -+ close(net_fd); ++ if (qflag <= 0) + return; -+ } + goto delay_exit; } /* listen and net in gone, queues empty, done */ if (lflag && pfd[POLL_NETIN].fd == -1 && stdinbufpos == 0 && netinbufpos == 0) { -- close(net_fd); + close(net_fd); - return; -+ if (qflag == 0) { -+ close(net_fd); ++ if (qflag <= 0) + return; -+ } +delay_exit: -+ quit_fd = net_fd; + signal(SIGALRM, quit); + alarm(qflag); } /* poll */ -@@ -1436,6 +1457,7 @@ help(void) +@@ -1436,6 +1454,7 @@ help(void) \t-O length TCP send buffer length\n\ \t-P proxyuser\tUsername for proxy authentication\n\ \t-p port\t Specify local port for remote connects\n\ @@ -119,7 +117,7 @@ \t-r Randomize remote ports\n\ \t-S Enable the TCP MD5 signature option\n\ \t-s addr\t Local source address\n\ -@@ -1458,9 +1480,21 @@ usage(int ret) +@@ -1458,9 +1477,18 @@ usage(int ret) { fprintf(stderr, "usage: nc [-46CDdFhklNnrStUuvz] [-I length] [-i interval] [-O length]\n" @@ -138,8 +136,5 @@ + */ +static void quit() +{ -+ if (quit_fd >= 0) -+ close(quit_fd); -+ -+ exit(0); ++ exit(0); +}
signature.asc
Description: PGP signature