summaryrefslogtreecommitdiff
path: root/apt-pkg/cacheset.cc
diff options
context:
space:
mode:
authorJulian Andres Klode <jak@debian.org>2020-05-04 12:10:50 +0000
committerJulian Andres Klode <jak@debian.org>2020-05-04 12:10:50 +0000
commit2265697c83faa308408cbf7d78b10317228ebad6 (patch)
tree9cce30181fd90f11bba30579072bf9b689dba664 /apt-pkg/cacheset.cc
parent6e6a9331e6d27d371844ec98775619328526f33d (diff)
parentc4f85bcb8bee1b5e647c7e629f616cffc7d12bbc (diff)
Merge branch 'pu/wildcards' into 'master'
Reinstate * wildcards See merge request apt-team/apt!118
Diffstat (limited to 'apt-pkg/cacheset.cc')
-rw-r--r--apt-pkg/cacheset.cc7
1 files changed, 5 insertions, 2 deletions
diff --git a/apt-pkg/cacheset.cc b/apt-pkg/cacheset.cc
index 288180f16..3967ba980 100644
--- a/apt-pkg/cacheset.cc
+++ b/apt-pkg/cacheset.cc
@@ -189,8 +189,11 @@ bool CacheSetHelper::PackageFromFnmatch(PackageContainerInterface * const pci,
pkgCacheFile &Cache, std::string pattern)
{
static const char * const isfnmatch = ".?*[]!";
- if (_config->FindB("APT::Cmd::Pattern-Only", false))
- return false;
+ // Whitelist approach: Anything not in here is not a valid pattern
+ static const char *const isfnmatch_strict = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+-.:*";
+
+ if (_config->FindB("APT::Cmd::Pattern-Only", false) && pattern.find_first_not_of(isfnmatch_strict) != std::string::npos)
+ return false;
if (pattern.find_first_of(isfnmatch) == std::string::npos)
return false;