summaryrefslogtreecommitdiff
path: root/apt-pkg/sourcelist.cc
diff options
context:
space:
mode:
authorDavid Kalnischkies <david@kalnischkies.de>2015-12-01 14:09:23 +0100
committerDavid Kalnischkies <david@kalnischkies.de>2015-12-01 14:26:05 +0100
commitf359b7e8c03884cd9f097d4b3ff8b8b8be8053ba (patch)
treed51eb4a58ad3223325551b84b88e3e16779f7dba /apt-pkg/sourcelist.cc
parent7d19ee92f2368a40e739cb27d22d6d28f37ebf45 (diff)
require explicit paths to dsc/control as we do for deb files
Otherwise a user is subject to unexpected content-injection depending on which directory she happens to start apt in. This also cleans up the code requiring less implementation details in build-dep which is always good. Technically, this is an ABI break as we override virtual methods, but that they weren't overridden was a mistake resulting in pure classes, which shouldn't be pure, so they were unusable – and as they are new in 1.1 nobody is using them yet (and hopefully ever as they are borderline implementation details). Closes: 806693
Diffstat (limited to 'apt-pkg/sourcelist.cc')
-rw-r--r--apt-pkg/sourcelist.cc8
1 files changed, 7 insertions, 1 deletions
diff --git a/apt-pkg/sourcelist.cc b/apt-pkg/sourcelist.cc
index 1e6b831be..6773b069f 100644
--- a/apt-pkg/sourcelist.cc
+++ b/apt-pkg/sourcelist.cc
@@ -544,11 +544,17 @@ void pkgSourceList::AddVolatileFile(pkgIndexFile * const File) /*{{{*/
/*}}}*/
bool pkgSourceList::AddVolatileFile(std::string const &File) /*{{{*/
{
+ // Note: FileExists matches directories and links, too!
if (File.empty() || FileExists(File) == false)
return false;
- if (flExtension(File) == "deb")
+ std::string const ext = flExtension(File);
+ if (ext == "deb")
AddVolatileFile(new debDebPkgFileIndex(File));
+ else if (ext == "dsc")
+ AddVolatileFile(new debDscFileIndex(File));
+ else if (FileExists(flCombine(File, "debian/control")))
+ AddVolatileFile(new debDscFileIndex(flCombine(File, "debian/control")));
else
return false;