Prechádzať zdrojové kódy

* cmdline/apt-get.cc
- fix memory leaks in error conditions in DoSource()

David Kalnischkies 16 rokov pred
rodič
commit
3a4477a424
3 zmenil súbory, kde vykonal 8 pridanie a 2 odobranie
  1. 2 1
      apt-pkg/cdrom.cc
  2. 5 1
      cmdline/apt-get.cc
  3. 1 0
      debian/changelog

+ 2 - 1
apt-pkg/cdrom.cc

@@ -289,7 +289,8 @@ bool pkgCdrom::DropRepeats(vector<string> &List,const char *Name)
 	 List[J] = string();
       }
    }  
- 
+   delete[] Inodes;
+
    // Wipe erased entries
    for (unsigned int I = 0; I < List.size();)
    {

+ 5 - 1
cmdline/apt-get.cc

@@ -2299,6 +2299,7 @@ bool DoSource(CommandLine &CmdL)
    {
       for (unsigned I = 0; I != J; I++)
 	 ioprintf(cout,_("Fetch source %s\n"),Dsc[I].Package.c_str());
+      delete[] Dsc;
       return true;
    }
    
@@ -2309,6 +2310,7 @@ bool DoSource(CommandLine &CmdL)
       for (; I != Fetcher.UriEnd(); I++)
 	 cout << '\'' << I->URI << "' " << flNotDir(I->Owner->DestFile) << ' ' << 
 	       I->Owner->FileSize << ' ' << I->Owner->HashSum() << endl;
+      delete[] Dsc;
       return true;
    }
    
@@ -2334,6 +2336,7 @@ bool DoSource(CommandLine &CmdL)
    if (_config->FindB("APT::Get::Download-only",false) == true)
    {
       c1out << _("Download complete and in download only mode") << endl;
+      delete[] Dsc;
       return true;
    }
 
@@ -2395,7 +2398,8 @@ bool DoSource(CommandLine &CmdL)
       
       _exit(0);
    }
-   
+   delete[] Dsc;
+
    // Wait for the subprocess
    int Status = 0;
    while (waitpid(Process,&Status,0) != Process)

+ 1 - 0
debian/changelog

@@ -16,6 +16,7 @@ apt (0.7.26) UNRELEASED; urgency=low
     - fix error message construction in OpenLog()
   * cmdline/apt-get.cc:
     - add a --only-upgrade flag to install command (Closes: #572259)
+    - fix memory leaks in error conditions in DoSource()
 
  -- David Kalnischkies <kalnischkies@gmail.com>  Fri, 19 Feb 2010 21:21:43 +0100