aboutsummaryrefslogtreecommitdiffstats
path: root/main/netcat-openbsd/0005-quit-timer.patch
diff options
context:
space:
mode:
authorLeonardo Arena <rnalrd@alpinelinux.org>2017-04-10 14:38:03 +0000
committerLeonardo Arena <rnalrd@alpinelinux.org>2017-04-10 14:39:08 +0000
commit3a368567d8f1bcf4935151dfaf5759453c67d1e6 (patch)
tree266240778882c9152733656249f3dc2dffecf837 /main/netcat-openbsd/0005-quit-timer.patch
parentbe30326a67f37a658677e8afa2959ee9ea3661f8 (diff)
downloadaports-3a368567d8f1bcf4935151dfaf5759453c67d1e6.tar.bz2
aports-3a368567d8f1bcf4935151dfaf5759453c67d1e6.tar.xz
main/netcat-openbsd: upgrade to 1.130, disable check(), modernize APKBUILD
Diffstat (limited to 'main/netcat-openbsd/0005-quit-timer.patch')
-rw-r--r--main/netcat-openbsd/0005-quit-timer.patch140
1 files changed, 140 insertions, 0 deletions
diff --git a/main/netcat-openbsd/0005-quit-timer.patch b/main/netcat-openbsd/0005-quit-timer.patch
new file mode 100644
index 0000000000..a4b3fa6bd8
--- /dev/null
+++ b/main/netcat-openbsd/0005-quit-timer.patch
@@ -0,0 +1,140 @@
+From: Aron Xu <aron@debian.org>
+Date: Mon, 13 Feb 2012 15:16:04 +0800
+Subject: quit timer
+
+---
+ nc.1 | 5 +++++
+ netcat.c | 52 +++++++++++++++++++++++++++++++++++++++++++---------
+ 2 files changed, 48 insertions(+), 9 deletions(-)
+
+diff --git a/nc.1 b/nc.1
+index 746d3b6..1ee6887 100644
+--- a/nc.1
++++ b/nc.1
+@@ -40,6 +40,7 @@
+ .Op Fl O Ar length
+ .Op Fl P Ar proxy_username
+ .Op Fl p Ar source_port
++.Op Fl q Ar seconds
+ .Op Fl s Ar source
+ .Op Fl T Ar toskeyword
+ .Op Fl V Ar rtable
+@@ -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
++.Ar seconds
++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
+diff --git a/netcat.c b/netcat.c
+index 1c90145..7572bb2 100644
+--- a/netcat.c
++++ b/netcat.c
+@@ -128,6 +128,7 @@ int Nflag; /* shutdown() network socket */
+ int nflag; /* Don't do name look up */
+ char *Pflag; /* Proxy username */
+ char *pflag; /* Localport flag */
++int qflag = -1; /* Quit after some secs */
+ int rflag; /* Random ports flag */
+ char *sflag; /* Source Address */
+ int tflag; /* Telnet Emulation */
+@@ -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);
+
++static void quit();
++
+ int
+ main(int argc, char *argv[])
+ {
+@@ -195,7 +198,7 @@ main(int argc, char *argv[])
+ signal(SIGPIPE, SIG_IGN);
+
+ while ((ch = getopt(argc, argv,
+- "46CDdFhI:i:klNnO:P:p:rSs:tT:UuV:vw:X:x:z")) != -1) {
++ "46CDdFhI:i:klNnO:P:p:q:rSs:tT:UuV:vw:X:x:z")) != -1) {
+ switch (ch) {
+ case '4':
+ family = AF_INET;
+@@ -248,6 +251,13 @@ main(int argc, char *argv[])
+ case 'p':
+ pflag = optarg;
+ break;
++ case 'q':
++ 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;
+@@ -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);
+- return;
++ 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);
+- return;
++ 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);
+- return;
++ if (qflag <= 0)
++ return;
++delay_exit:
++ signal(SIGALRM, quit);
++ alarm(qflag);
+ }
+
+ /* poll */
+@@ -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\
++ \t-q secs\t quit after EOF on stdin and delay of secs\n\
+ \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 +1477,18 @@ usage(int ret)
+ {
+ fprintf(stderr,
+ "usage: nc [-46CDdFhklNnrStUuvz] [-I length] [-i interval] [-O length]\n"
+- "\t [-P proxy_username] [-p source_port] [-s source] [-T toskeyword]\n"
+- "\t [-V rtable] [-w timeout] [-X proxy_protocol]\n"
++ "\t [-P proxy_username] [-p source_port] [-q seconds] [-s source]\n"
++ "\t [-T toskeyword] [-V rtable] [-w timeout] [-X proxy_protocol]\n"
+ "\t [-x proxy_address[:port]] [destination] [port]\n");
+ if (ret)
+ exit(1);
+ }
++
++/*
++ * quit()
++ * handler for a "-q" timeout (exit 0 instead of 1)
++ */
++static void quit()
++{
++ exit(0);
++}