Nagy Ferenc László <[EMAIL PROTECTED]> writes:

> If the ftp server returns invalid data (for example '221 Bye.') in
> response to PWD, wget segfaults because in ftp_pwd (ftp-basic.c)
> request will be NULL after the line 'request = strtok (NULL,
> "\"");', and this NULL will be passed to xstrdup.

Thanks for the report; this patch should fix the problem:

2005-06-15  Hrvoje Niksic  <[EMAIL PROTECTED]>

        * ftp-basic.c (ftp_pwd): Handle malformed PWD response.

Index: src/ftp-basic.c
===================================================================
RCS file: /pack/anoncvs/wget/src/ftp-basic.c,v
retrieving revision 1.47
diff -u -r1.47 ftp-basic.c
--- src/ftp-basic.c     2005/05/16 22:08:57     1.47
+++ src/ftp-basic.c     2005/06/15 20:10:43
@@ -1081,6 +1081,7 @@
     return err;
   if (*respline == '5')
     {
+    err:
       xfree (respline);
       return FTPSRVERR;
     }
@@ -1089,6 +1090,10 @@
      and everything following it. */
   strtok (respline, "\"");
   request = strtok (NULL, "\"");
+  if (!request)
+    /* Treat the malformed response as an error, which the caller has
+       to handle gracefully anyway.  */
+    goto err;
 
   /* Has the `pwd' been already allocated?  Free! */
   xfree_null (*pwd);

Reply via email to