From 40f62a8c3de7f9438c2137d181dde525b40a88c3 Mon Sep 17 00:00:00 2001 From: Denis Vlasenko Date: Tue, 21 Nov 2006 11:04:31 +0000 Subject: wget: fix ftp PASV mode ("numeric" check was too strict) --- networking/wget.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'networking/wget.c') diff --git a/networking/wget.c b/networking/wget.c index 69cabfc7f..abc011c7d 100644 --- a/networking/wget.c +++ b/networking/wget.c @@ -414,9 +414,11 @@ int wget_main(int argc, char **argv) pasv_error: bb_error_msg_and_die("bad response to %s: %s", "PASV", buf); } - // Response is "227 garbageN1,N2,N3,N4,P1,P2 + // Response is "227 garbageN1,N2,N3,N4,P1,P2[)] // Server's IP is N1.N2.N3.N4 (we ignore it) // Server's port for data connection is P1*256+P2 + s = strrchr(buf, ')'); + if (s && !s[1]) s[0] = '\0'; s = strrchr(buf, ','); if (!s) goto pasv_error; port = xatol_range(s+1, 0, 255); @@ -608,13 +610,13 @@ static char *gethdr(char *buf, size_t bufsiz, FILE *fp, int *istrunc) return NULL; /* see if we are at the end of the headers */ - for (s = buf ; *s == '\r' ; ++s) + for (s = buf; *s == '\r'; ++s) ; if (s[0] == '\n') return NULL; /* convert the header name to lower case */ - for (s = buf ; isalnum(*s) || *s == '-' ; ++s) + for (s = buf; isalnum(*s) || *s == '-'; ++s) *s = tolower(*s); /* verify we are at the end of the header name */ @@ -622,7 +624,7 @@ static char *gethdr(char *buf, size_t bufsiz, FILE *fp, int *istrunc) bb_error_msg_and_die("bad header line: %s", buf); /* locate the start of the header value */ - for (*s++ = '\0' ; *s == ' ' || *s == '\t' ; ++s) + for (*s++ = '\0'; *s == ' ' || *s == '\t'; ++s) ; hdrval = s; -- cgit v1.2.3