summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Reisner <dreisner@archlinux.org>2012-06-20 22:18:42 +0200
committerDan McGee <dan@archlinux.org>2012-06-26 06:05:59 +0200
commitda0dcc29cf038de7dee9b16987b508e45d56ae91 (patch)
tree54d2511deb54262bd9bae32a8f4f556efd22f0de
parentc6e47cb435988494f978c603eb12db97cfc88b3e (diff)
downloadpacman-da0dcc29cf038de7dee9b16987b508e45d56ae91.tar.gz
pacman-da0dcc29cf038de7dee9b16987b508e45d56ae91.tar.xz
query: avoid false ownership matches for files in root
Check for an exact match when querying ownership of files in the root. Previously, our test was too simple and would match the the basename of package files against the query parameter, e.g. $ pacman -Qo config /config is owned by cower-git 20120614-1 Adds a new test to verify this behavior, query007.py. Fixes FS#30388. Signed-off-by: Dave Reisner <dreisner@archlinux.org> Signed-off-by: Dan McGee <dan@archlinux.org>
-rw-r--r--src/pacman/query.c6
-rw-r--r--test/pacman/tests/query007.py11
2 files changed, 15 insertions, 2 deletions
diff --git a/src/pacman/query.c b/src/pacman/query.c
index a1cc1cf9..08974105 100644
--- a/src/pacman/query.c
+++ b/src/pacman/query.c
@@ -207,8 +207,10 @@ static int query_fileowner(alpm_list_t *targets)
/* for files in '/', there is no directory name to match */
if(!rpath) {
- print_query_fileowner(filename, info);
- found = 1;
+ if(strcmp(pkgfile, bname) == 0) {
+ print_query_fileowner(filename, info);
+ found = 1;
+ }
continue;
}
diff --git a/test/pacman/tests/query007.py b/test/pacman/tests/query007.py
new file mode 100644
index 00000000..35bb0ca6
--- /dev/null
+++ b/test/pacman/tests/query007.py
@@ -0,0 +1,11 @@
+self.description = "Query ownership of file in root"
+
+sp = pmpkg("dummy")
+sp.files = ["etc/config"]
+self.addpkg2db("local", sp)
+
+self.filesystem = ["config"]
+
+self.args = "-Qo /config"
+
+self.addrule("PACMAN_RETCODE=1")