]> git.saurik.com Git - apt.git/commitdiff
do chdir("/") after chroot()
authorMichael Vogt <mvo@debian.org>
Thu, 22 Aug 2013 20:30:20 +0000 (22:30 +0200)
committerMichael Vogt <mvo@debian.org>
Thu, 22 Aug 2013 20:30:20 +0000 (22:30 +0200)
apt-pkg/aptconfiguration.cc
apt-pkg/tagfile.cc
cmdline/apt-mark.cc

index e32e553a424ad34cb65f50a58148269e25f7c957..4f9b84e0045905ca337af6754f1436a16368bfc6 100644 (file)
@@ -392,7 +392,7 @@ std::vector<std::string> const Configuration::getArchitectures(bool const &Cache
                        dup2(nullfd, STDIN_FILENO);
                        dup2(external[1], STDOUT_FILENO);
                        dup2(nullfd, STDERR_FILENO);
-                       if (chrootDir != "/" && chroot(chrootDir.c_str()) != 0)
+                       if (chrootDir != "/" && chroot(chrootDir.c_str()) != 0 && chdir("/") != 0)
                                _error->WarningE("getArchitecture", "Couldn't chroot into %s for dpkg --print-foreign-architectures", chrootDir.c_str());
                        execvp(Args[0], (char**) &Args[0]);
                        _error->WarningE("getArchitecture", "Can't detect foreign architectures supported by dpkg!");
index 868adf3d2b8c719ee96c0c9b951685d809ab7251..b91e868e2a6c9f6169038dc336bcc517efe84a23 100644 (file)
@@ -237,7 +237,7 @@ bool pkgTagFile::Jump(pkgTagSection &Tag,unsigned long long Offset)
 // ---------------------------------------------------------------------
 /* */
 pkgTagSection::pkgTagSection()
-   : Section(0), TagCount(0), Stop(0), d(NULL)
+   : Section(0), TagCount(0), d(NULL), Stop(0)
 {
    memset(&Indexes, 0, sizeof(Indexes));
    memset(&AlphaIndexes, 0, sizeof(AlphaIndexes));
index eb3410be148acbf8dc84712263ebc994a6fbcaff..ebb1f98924a8931e94b0c8fafac41b5cfb494aad 100644 (file)
@@ -209,7 +209,7 @@ bool DoHold(CommandLine &CmdL)
       dup2(nullfd, STDIN_FILENO);
       dup2(nullfd, STDOUT_FILENO);
       dup2(nullfd, STDERR_FILENO);
-      if (chrootDir != "/" && chroot(chrootDir.c_str()) != 0)
+      if (chrootDir != "/" && chroot(chrootDir.c_str()) != 0 && chdir("/") != 0)
         _error->WarningE("getArchitecture", "Couldn't chroot into %s for dpkg --assert-multi-arch", chrootDir.c_str());
       execvp(Args[0], (char**) &Args[0]);
       _error->WarningE("dpkgGo", "Can't detect if dpkg supports multi-arch!");
@@ -279,7 +279,7 @@ bool DoHold(CommandLine &CmdL)
    {
       close(external[1]);
       std::string const chrootDir = _config->FindDir("DPkg::Chroot-Directory");
-      if (chrootDir != "/" && chroot(chrootDir.c_str()) != 0)
+      if (chrootDir != "/" && chroot(chrootDir.c_str()) != 0 && chdir("/") != 0)
         _error->WarningE("getArchitecture", "Couldn't chroot into %s for dpkg --set-selections", chrootDir.c_str());
       int const nullfd = open("/dev/null", O_RDONLY);
       dup2(external[0], STDIN_FILENO);