]> git.saurik.com Git - apt.git/blobdiff - cmdline/apt-helper.cc
add hashsum support in apt-file download and add more tests
[apt.git] / cmdline / apt-helper.cc
index c1c8b2178b3643da226ba8e547f2e76d51bcd728..4a24b01d9dd085baa201461707f80863660355b3 100644 (file)
@@ -44,6 +44,9 @@ bool DoDownloadFile(CommandLine &CmdL)
    Fetcher.Setup(&Stat);
    std::string download_uri = CmdL.FileList[1];
    std::string targetfile = CmdL.FileList[2];
    Fetcher.Setup(&Stat);
    std::string download_uri = CmdL.FileList[1];
    std::string targetfile = CmdL.FileList[2];
+   HashString hash;
+   if (CmdL.FileSize() > 3)
+      hash = HashString(CmdL.FileList[3]);
    new pkgAcqFile(&Fetcher, download_uri, "", 0, "desc", "short-desc", 
                   "dest-dir-ignored", targetfile);
    Fetcher.Run();
    new pkgAcqFile(&Fetcher, download_uri, "", 0, "desc", "short-desc", 
                   "dest-dir-ignored", targetfile);
    Fetcher.Run();
@@ -52,6 +55,14 @@ bool DoDownloadFile(CommandLine &CmdL)
       _error->Error(_("Download Failed"));
       return false;
    }
       _error->Error(_("Download Failed"));
       return false;
    }
+   if(hash.empty() == false)
+      if(hash.VerifyFile(targetfile) == false)
+      {
+         _error->Error(_("HashSum Failed"));
+         Rename(targetfile, targetfile+".failed");
+         return false;
+      }
+
    return true;
 }
 
    return true;
 }