MFC: netcat from OpenBSD 4.1-RELEASE.
This commit is contained in:
parent
025fdf171c
commit
cc5b12cd19
@ -1,4 +1,4 @@
|
||||
.\" $OpenBSD: nc.1,v 1.43 2006/01/31 09:34:12 jmc Exp $
|
||||
.\" $OpenBSD: nc.1,v 1.44 2006/12/02 01:08:30 jmc Exp $
|
||||
.\"
|
||||
.\" Copyright (c) 1996 David Sacerdote
|
||||
.\" All rights reserved.
|
||||
@ -345,8 +345,8 @@ As another example, an email may be submitted to an SMTP server using:
|
||||
.Bd -literal -offset indent
|
||||
$ nc localhost 25 \*(Lt\*(Lt EOF
|
||||
HELO host.example.com
|
||||
MAIL FROM: \*(Ltuser@host.example.com\*(Gt
|
||||
RCPT TO: \*(Ltuser2@host.example.com\*(Gt
|
||||
MAIL FROM:\*(Ltuser@host.example.com\*(Gt
|
||||
RCPT TO:\*(Ltuser2@host.example.com\*(Gt
|
||||
DATA
|
||||
Body of email.
|
||||
\&.
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $OpenBSD: netcat.c,v 1.87 2006/02/01 21:33:14 otto Exp $ */
|
||||
/* $OpenBSD: netcat.c,v 1.89 2007/02/20 14:11:17 jmc Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2001 Eric Jackson <ericj@monkey.org>
|
||||
*
|
||||
@ -72,7 +72,7 @@
|
||||
/* Command Line Options */
|
||||
int Eflag; /* Use IPsec ESP */
|
||||
int dflag; /* detached, no stdin */
|
||||
int iflag; /* Interval Flag */
|
||||
unsigned int iflag; /* Interval Flag */
|
||||
int jflag; /* use jumbo frames if we can */
|
||||
int kflag; /* More than one connect */
|
||||
int lflag; /* Bind to local port */
|
||||
@ -120,13 +120,13 @@ int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
int ch, s, ret, socksv, ipsec_count;
|
||||
char *host, *uport, *endp;
|
||||
char *host, *uport;
|
||||
struct addrinfo hints;
|
||||
struct servent *sv;
|
||||
socklen_t len;
|
||||
struct sockaddr_storage cliaddr;
|
||||
char *proxy;
|
||||
const char *proxyhost = "", *proxyport = NULL;
|
||||
const char *errstr, *proxyhost = "", *proxyport = NULL;
|
||||
struct addrinfo proxyhints;
|
||||
|
||||
ret = 1;
|
||||
@ -135,7 +135,6 @@ main(int argc, char *argv[])
|
||||
socksv = 5;
|
||||
host = NULL;
|
||||
uport = NULL;
|
||||
endp = NULL;
|
||||
sv = NULL;
|
||||
|
||||
while ((ch = getopt(argc, argv,
|
||||
@ -182,9 +181,9 @@ main(int argc, char *argv[])
|
||||
help();
|
||||
break;
|
||||
case 'i':
|
||||
iflag = (int)strtoul(optarg, &endp, 10);
|
||||
if (iflag < 0 || *endp != '\0')
|
||||
errx(1, "interval cannot be negative");
|
||||
iflag = strtonum(optarg, 0, UINT_MAX, &errstr);
|
||||
if (errstr)
|
||||
errx(1, "interval %s: %s", errstr, optarg);
|
||||
break;
|
||||
#ifdef SO_JUMBO
|
||||
case 'j':
|
||||
@ -225,11 +224,9 @@ main(int argc, char *argv[])
|
||||
vflag = 1;
|
||||
break;
|
||||
case 'w':
|
||||
timeout = (int)strtoul(optarg, &endp, 10);
|
||||
if (timeout < 0 || *endp != '\0')
|
||||
errx(1, "timeout cannot be negative");
|
||||
if (timeout >= (INT_MAX / 1000))
|
||||
errx(1, "timeout too large");
|
||||
timeout = strtonum(optarg, 0, INT_MAX / 1000, &errstr);
|
||||
if (errstr)
|
||||
errx(1, "timeout %s: %s", errstr, optarg);
|
||||
timeout *= 1000;
|
||||
break;
|
||||
case 'x':
|
||||
@ -727,7 +724,8 @@ atelnet(int nfd, unsigned char *buf, unsigned int size)
|
||||
void
|
||||
build_ports(char *p)
|
||||
{
|
||||
char *n, *endp;
|
||||
const char *errstr;
|
||||
char *n;
|
||||
int hi, lo, cp;
|
||||
int x = 0;
|
||||
|
||||
@ -739,12 +737,12 @@ build_ports(char *p)
|
||||
n++;
|
||||
|
||||
/* Make sure the ports are in order: lowest->highest. */
|
||||
hi = (int)strtoul(n, &endp, 10);
|
||||
if (hi <= 0 || hi > PORT_MAX || *endp != '\0')
|
||||
errx(1, "port range not valid");
|
||||
lo = (int)strtoul(p, &endp, 10);
|
||||
if (lo <= 0 || lo > PORT_MAX || *endp != '\0')
|
||||
errx(1, "port range not valid");
|
||||
hi = strtonum(n, 1, PORT_MAX, &errstr);
|
||||
if (errstr)
|
||||
errx(1, "port number %s: %s", errstr, n);
|
||||
lo = strtonum(p, 1, PORT_MAX, &errstr);
|
||||
if (errstr)
|
||||
errx(1, "port number %s: %s", errstr, p);
|
||||
|
||||
if (lo > hi) {
|
||||
cp = hi;
|
||||
@ -774,9 +772,9 @@ build_ports(char *p)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
hi = (int)strtoul(p, &endp, 10);
|
||||
if (hi <= 0 || hi > PORT_MAX || *endp != '\0')
|
||||
errx(1, "port range not valid");
|
||||
hi = strtonum(p, 1, PORT_MAX, &errstr);
|
||||
if (errstr)
|
||||
errx(1, "port number %s: %s", errstr, p);
|
||||
portlist[0] = calloc(1, PORT_MAX_LEN);
|
||||
if (portlist[0] == NULL)
|
||||
err(1, NULL);
|
||||
@ -916,13 +914,12 @@ add_ipsec_policy(int s, char *policy)
|
||||
void
|
||||
usage(int ret)
|
||||
{
|
||||
|
||||
#ifdef IPSEC
|
||||
fprintf(stderr, "usage: nc [-46DEdhklnrStUuvz] [-e policy] [-i interval] [-p source_port]\n");
|
||||
fprintf(stderr, "usage: nc [-46DEdhklnrStUuvz] [-e policy] [-i interval] [-P proxy_username] [-p source_port]\n");
|
||||
#else
|
||||
fprintf(stderr, "usage: nc [-46DdhklnrStUuvz] [-i interval] [-p source_port]\n");
|
||||
fprintf(stderr, "usage: nc [-46DdhklnrStUuvz] [-i interval] [-P proxy_username] [-p source_port]\n");
|
||||
#endif
|
||||
fprintf(stderr, "\t [-s source_ip_address] [-T ToS] [-w timeout] [-X proxy_version]\n");
|
||||
fprintf(stderr, "\t [-s source_ip_address] [-T ToS] [-w timeout] [-X proxy_protocol]\n");
|
||||
fprintf(stderr, "\t [-x proxy_address[:port]] [hostname] [port[s]]\n");
|
||||
if (ret)
|
||||
exit(1);
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $OpenBSD: socks.c,v 1.16 2006/01/25 23:21:37 djm Exp $ */
|
||||
/* $OpenBSD: socks.c,v 1.17 2006/09/25 04:51:20 ray Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1999 Niklas Hallqvist. All rights reserved.
|
||||
@ -307,7 +307,8 @@ socks_connect(const char *host, const char *port,
|
||||
}
|
||||
close(proxyfd);
|
||||
goto again;
|
||||
} else if (strncmp(buf, "HTTP/1.0 200 ", 12) != 0)
|
||||
} else if (strncmp(buf, "HTTP/1.0 200 ", 12) != 0 &&
|
||||
strncmp(buf, "HTTP/1.1 200 ", 12) != 0)
|
||||
errx(1, "Proxy error: \"%s\"", buf);
|
||||
|
||||
/* Headers continue until we hit an empty line */
|
||||
|
Loading…
Reference in New Issue
Block a user