From 98f884ebec556bafe6f9650e105fc7c60580e730 Mon Sep 17 00:00:00 2001 From: Julian Andres Klode Date: Wed, 3 Aug 2016 18:50:37 +0200 Subject: ExecGPGV: Pass current config state to apt-key via temp file Create a temporary configuration file with a dump of our configuration and pass that to apt-key. LP: #1607283 --- apt-pkg/contrib/gpgv.cc | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/apt-pkg/contrib/gpgv.cc b/apt-pkg/contrib/gpgv.cc index 4247a1562..8796195b8 100644 --- a/apt-pkg/contrib/gpgv.cc +++ b/apt-pkg/contrib/gpgv.cc @@ -18,6 +18,7 @@ #include #include +#include #include #include #include @@ -105,6 +106,28 @@ void ExecGPGV(std::string const &File, std::string const &FileGPG, std::vector dataHeader; char * sig = NULL; char * data = NULL; + char * conf = nullptr; + + // Dump the configuration so apt-key picks up the correct Dir values + { + conf = GenerateTemporaryFileTemplate("apt.conf"); + if (conf == nullptr) { + ioprintf(std::cerr, "Couldn't create tempfile names for passing config to apt-key"); + local_exit(EINTERNAL); + } + int confFd = mkstemp(conf); + if (confFd == -1) { + ioprintf(std::cerr, "Couldn't create temporary file %s for passing config to apt-key", conf); + local_exit(EINTERNAL); + } + local_exit.files.push_back(conf); + + std::ofstream confStream(conf); + close(confFd); + _config->Dump(confStream); + confStream.close(); + setenv("APT_CONFIG", conf, 1); + } if (releaseSignature == DETACHED) { -- cgit v1.2.3