diff options
author | Alexander Motin <mav@FreeBSD.org> | 2008-07-07 18:39:47 +0000 |
---|---|---|
committer | Alexander Motin <mav@FreeBSD.org> | 2008-07-07 18:39:47 +0000 |
commit | bbfb692933fa2710baf1187565d04d3af3781ea9 (patch) | |
tree | f3c687578382c8d0832b465ac3390da4c5f5cb4c | |
parent | 5e9b7039084c247915e6ca33d2827c6cf391905f (diff) |
Notes
-rw-r--r-- | sys/netinet/libalias/alias_ftp.c | 117 |
1 files changed, 21 insertions, 96 deletions
diff --git a/sys/netinet/libalias/alias_ftp.c b/sys/netinet/libalias/alias_ftp.c index 68134af1ab27..aa61c41a9831 100644 --- a/sys/netinet/libalias/alias_ftp.c +++ b/sys/netinet/libalias/alias_ftp.c @@ -270,36 +270,14 @@ ParseFtpPortCommand(struct libalias *la, char *sptr, int dlen) if (dlen < 18) return (0); + if (strncasecmp("PORT ", sptr, 5)) + return (0); + addr = port = octet = 0; - state = -4; - for (i = 0; i < dlen; i++) { + state = 0; + for (i = 5; i < dlen; i++) { ch = sptr[i]; switch (state) { - case -4: - if (ch == 'P') - state++; - else - return (0); - break; - case -3: - if (ch == 'O') - state++; - else - return (0); - break; - case -2: - if (ch == 'R') - state++; - else - return (0); - break; - case -1: - if (ch == 'T') - state++; - else - return (0); - break; - case 0: if (isspace(ch)) break; @@ -365,37 +343,15 @@ ParseFtpEprtCommand(struct libalias *la, char *sptr, int dlen) if (dlen < 18) return (0); + if (strncasecmp("EPRT ", sptr, 5)) + return (0); + addr = port = octet = 0; delim = '|'; /* XXX gcc -Wuninitialized */ - state = -4; - for (i = 0; i < dlen; i++) { + state = 0; + for (i = 5; i < dlen; i++) { ch = sptr[i]; switch (state) { - case -4: - if (ch == 'E') - state++; - else - return (0); - break; - case -3: - if (ch == 'P') - state++; - else - return (0); - break; - case -2: - if (ch == 'R') - state++; - else - return (0); - break; - case -1: - if (ch == 'T') - state++; - else - return (0); - break; - case 0: if (!isspace(ch)) { delim = ch; @@ -477,31 +433,15 @@ ParseFtp227Reply(struct libalias *la, char *sptr, int dlen) if (dlen < 17) return (0); + if (strncmp("227 ", sptr, 4)) + return (0); + addr = port = octet = 0; - state = -3; - for (i = 0; i < dlen; i++) { + state = 0; + for (i = 4; i < dlen; i++) { ch = sptr[i]; switch (state) { - case -3: - if (ch == '2') - state++; - else - return (0); - break; - case -2: - if (ch == '2') - state++; - else - return (0); - break; - case -1: - if (ch == '7') - state++; - else - return (0); - break; - case 0: if (ch == '(') state++; @@ -564,32 +504,16 @@ ParseFtp229Reply(struct libalias *la, char *sptr, int dlen) if (dlen < 11) return (0); + if (strncmp("229 ", sptr, 4)) + return (0); + port = 0; delim = '|'; /* XXX gcc -Wuninitialized */ - state = -3; - for (i = 0; i < dlen; i++) { + state = 0; + for (i = 4; i < dlen; i++) { ch = sptr[i]; switch (state) { - case -3: - if (ch == '2') - state++; - else - return (0); - break; - case -2: - if (ch == '2') - state++; - else - return (0); - break; - case -1: - if (ch == '9') - state++; - else - return (0); - break; - case 0: if (ch == '(') state++; @@ -689,6 +613,7 @@ NewFtpMessage(struct libalias *la, struct ip *pip, alias_port = GetAliasPort(ftp_lnk); +/* Prepare new command */ switch (ftp_message_type) { case FTP_PORT_COMMAND: case FTP_227_REPLY: |