nc: fix "nc -nl -p LPORT RHOST" case (was expecting remote port 0). closes bug 837
function old new delta dolisten 742 830 +88 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
8cd04d1cb6
commit
866710a056
@ -340,16 +340,29 @@ create new one, and bind() it. TODO */
|
|||||||
rr = accept(netfd, &remend.u.sa, &remend.len);
|
rr = accept(netfd, &remend.u.sa, &remend.len);
|
||||||
if (rr < 0)
|
if (rr < 0)
|
||||||
bb_perror_msg_and_die("accept");
|
bb_perror_msg_and_die("accept");
|
||||||
if (themaddr && memcmp(&remend.u.sa, &themaddr->u.sa, remend.len) != 0) {
|
if (themaddr) {
|
||||||
/* nc 1.10 bails out instead, and its error message
|
int sv_port, port, r;
|
||||||
* is not suppressed by o_verbose */
|
|
||||||
if (o_verbose) {
|
sv_port = get_nport(&remend.u.sa); /* save */
|
||||||
char *remaddr = xmalloc_sockaddr2dotted(&remend.u.sa);
|
port = get_nport(&themaddr->u.sa);
|
||||||
bb_error_msg("connect from wrong ip/port %s ignored", remaddr);
|
if (port == 0) {
|
||||||
free(remaddr);
|
/* "nc -nl -p LPORT RHOST" (w/o RPORT!):
|
||||||
|
* we should accept any remote port */
|
||||||
|
set_nport(&remend, 0); /* blot out remote port# */
|
||||||
|
}
|
||||||
|
r = memcmp(&remend.u.sa, &themaddr->u.sa, remend.len);
|
||||||
|
set_nport(&remend, sv_port); /* restore */
|
||||||
|
if (r != 0) {
|
||||||
|
/* nc 1.10 bails out instead, and its error message
|
||||||
|
* is not suppressed by o_verbose */
|
||||||
|
if (o_verbose) {
|
||||||
|
char *remaddr = xmalloc_sockaddr2dotted(&remend.u.sa);
|
||||||
|
bb_error_msg("connect from wrong ip/port %s ignored", remaddr);
|
||||||
|
free(remaddr);
|
||||||
|
}
|
||||||
|
close(rr);
|
||||||
|
goto again;
|
||||||
}
|
}
|
||||||
close(rr);
|
|
||||||
goto again;
|
|
||||||
}
|
}
|
||||||
unarm();
|
unarm();
|
||||||
} else
|
} else
|
||||||
|
Loading…
Reference in New Issue
Block a user