]> sjero.net Git - wget/commitdiff
Fix memory leak in retrieve_from_file.
authorSteven Schubiger <stsc@member.fsf.org>
Tue, 2 Mar 2010 19:35:02 +0000 (20:35 +0100)
committerSteven Schubiger <stsc@member.fsf.org>
Tue, 2 Mar 2010 19:35:02 +0000 (20:35 +0100)
src/ChangeLog
src/retr.c

index 1b8cb04dc042dba9baf9a87a63bf9a062abb2d6c..0ee92fdc33e855a84c21ac88d1fc24572d00556a 100644 (file)
@@ -1,3 +1,7 @@
+2010-03-02  Steven Schubiger  <stsc@member.fsf.org>
+
+       * retr.c (retrieve_from_file): Free memory of input file.
+
 2010-03-01  Steven Schubiger  <stsc@member.fsf.org>
 
        * retr.c (retrieve_url): Retrieve the local filename from ftp_loop. 
index ebcc3c20ae9f0eacb5e13958830f0f1ebf1b43c7..55d5be788ce2430b28166c7515e39de5a1d57b8e 100644 (file)
@@ -889,7 +889,7 @@ retrieve_from_file (const char *file, bool html, int *count)
   struct urlpos *url_list, *cur_url;
   struct iri *iri = iri_new();
 
-  char *input_file = NULL;
+  char *input_file, *url_file = NULL;
   const char *url = file;
 
   status = RETROK;             /* Suppose everything is OK.  */
@@ -916,11 +916,11 @@ retrieve_from_file (const char *file, bool html, int *count)
       if (!opt.base_href)
         opt.base_href = xstrdup (url);
 
-      status = retrieve_url (url_parsed, url, &input_file, NULL, NULL, &dt,
+      status = retrieve_url (url_parsed, url, &url_file, NULL, NULL, &dt,
                              false, iri, true);
       url_free (url_parsed);
 
-      if (!input_file || (status != RETROK))
+      if (!url_file || (status != RETROK))
         return status;
 
       if (dt & TEXTHTML)
@@ -935,6 +935,8 @@ retrieve_from_file (const char *file, bool html, int *count)
       iri->utf8_encode = opt.enable_iri;
       xfree_null (iri->orig_url);
       iri->orig_url = NULL;
+
+      input_file = url_file;
     }
   else
     input_file = (char *) file;
@@ -942,6 +944,8 @@ retrieve_from_file (const char *file, bool html, int *count)
   url_list = (html ? get_urls_html (input_file, NULL, NULL, iri)
               : get_urls_file (input_file));
 
+  xfree_null (url_file);
+
   for (cur_url = url_list; cur_url; cur_url = cur_url->next, ++*count)
     {
       char *filename = NULL, *new_file = NULL;