diff options
Diffstat (limited to '')
| -rw-r--r-- | src/lib/libc/net/rcmd.c | 9 |
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 | } |
| 156 | again: | ||
| 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, |
