summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorderaadt <>1996-08-05 00:34:46 +0000
committerderaadt <>1996-08-05 00:34:46 +0000
commit81c42da8eab8db75b274dfad67c774e1de33b4b7 (patch)
tree14aa888f865d3504dd69317cef248b178276d446 /src
parent0aaa4c311dfae93c402588aa9d940f94263dcf0c (diff)
downloadopenbsd-81c42da8eab8db75b274dfad67c774e1de33b4b7.tar.gz
openbsd-81c42da8eab8db75b274dfad67c774e1de33b4b7.tar.bz2
openbsd-81c42da8eab8db75b274dfad67c774e1de33b4b7.zip
if port 20 incoming, kill it and try again
Diffstat (limited to 'src')
-rw-r--r--src/lib/libc/net/rcmd.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/lib/libc/net/rcmd.c b/src/lib/libc/net/rcmd.c
index 643604f3b3..86f35664e4 100644
--- a/src/lib/libc/net/rcmd.c
+++ b/src/lib/libc/net/rcmd.c
@@ -153,6 +153,7 @@ rcmd(ahost, rport, locuser, remuser, cmd, fd2p)
153 (void)close(s2); 153 (void)close(s2);
154 goto bad; 154 goto bad;
155 } 155 }
156again:
156 FD_ZERO(&reads); 157 FD_ZERO(&reads);
157 FD_SET(s, &reads); 158 FD_SET(s, &reads);
158 FD_SET(s2, &reads); 159 FD_SET(s2, &reads);
@@ -170,6 +171,14 @@ rcmd(ahost, rport, locuser, remuser, cmd, fd2p)
170 goto bad; 171 goto bad;
171 } 172 }
172 s3 = accept(s2, (struct sockaddr *)&from, &len); 173 s3 = accept(s2, (struct sockaddr *)&from, &len);
174 /*
175 * XXX careful for ftp bounce attacks. If discovered, shut them
176 * down and check for the real auxiliary channel to connect.
177 */
178 if (from.sin_family == AF_INET && from.sin_port == htons(20)) {
179 close(s3);
180 goto again;
181 }
173 (void)close(s2); 182 (void)close(s2);
174 if (s3 < 0) { 183 if (s3 < 0) {
175 (void)fprintf(stderr, 184 (void)fprintf(stderr,