From 42610b9d5a95ec108b74ffbc6446542cf6b0176a Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Wed, 29 Jun 2016 10:16:14 +0200 Subject: if conf unset, don't read / as conf/pref/sources dir Usually these config options are set to sensible values, but if init isn't run or the user interferes with configuration clearing or similar the options could indeed carry an empty value, which will result in FindDir returning a '/'. That feels kinda wrong, but as a public interface there isn't much we can do about it and instead make it so that we get the special file /dev/null back we know how to deal with in such cases. --- apt-pkg/init.cc | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'apt-pkg/init.cc') diff --git a/apt-pkg/init.cc b/apt-pkg/init.cc index 9543ca7e8..fa679e6c6 100644 --- a/apt-pkg/init.cc +++ b/apt-pkg/init.cc @@ -15,6 +15,7 @@ #include #include #include +#include #include #include @@ -134,14 +135,14 @@ bool pkgInitConfig(Configuration &Cnf) } // Read the configuration parts dir - std::string Parts = Cnf.FindDir("Dir::Etc::parts"); + std::string const Parts = Cnf.FindDir("Dir::Etc::parts", "/dev/null"); if (DirectoryExists(Parts) == true) Res &= ReadConfigDir(Cnf,Parts); - else + else if (APT::String::Endswith(Parts, "/dev/null") == false) _error->WarningE("DirectoryExists",_("Unable to read %s"),Parts.c_str()); // Read the main config file - std::string FName = Cnf.FindFile("Dir::Etc::main"); + std::string const FName = Cnf.FindFile("Dir::Etc::main", "/dev/null"); if (RealFileExists(FName) == true) Res &= ReadConfigFile(Cnf,FName); -- cgit v1.2.3