summaryrefslogtreecommitdiff
path: root/backport-Check-inside-root-when-querying-for-files.patch
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2024-09-18 07:05:42 +0000
committerCoprDistGit <infra@openeuler.org>2024-09-18 07:05:42 +0000
commit4ad1d692311b38472d44f5deb9c32634b334ed4d (patch)
tree3e004676c8e07b495fdeda7291033d0fde73d783 /backport-Check-inside-root-when-querying-for-files.patch
parente248808867f90830a43b5ca5d192bef9dd2edec2 (diff)
automatic import of rpm
Diffstat (limited to 'backport-Check-inside-root-when-querying-for-files.patch')
-rw-r--r--backport-Check-inside-root-when-querying-for-files.patch38
1 files changed, 38 insertions, 0 deletions
diff --git a/backport-Check-inside-root-when-querying-for-files.patch b/backport-Check-inside-root-when-querying-for-files.patch
new file mode 100644
index 0000000..3759486
--- /dev/null
+++ b/backport-Check-inside-root-when-querying-for-files.patch
@@ -0,0 +1,38 @@
+From 3e820eaa4c8cb94a63338366cbf014dc5264eba2 Mon Sep 17 00:00:00 2001
+From: Florian Festi <ffesti@redhat.com>
+Date: Tue, 25 Jul 2023 12:08:42 +0200
+Subject: [PATCH] Check inside --root when querying for files
+
+rpm -qf checks if the argument actually exists if it can't be found in
+the rpmdb and gives different messages based on that.
+
+This was done without taking the root dir into account leading to wrong
+messages if the file only exists in the root dir but not outside.
+
+Resolves: #2576
+---
+ lib/query.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/lib/query.c b/lib/query.c
+index e816241b7..dc2dc910b 100644
+--- a/lib/query.c
++++ b/lib/query.c
+@@ -470,11 +470,13 @@ static rpmdbMatchIterator initQueryIterator(QVA_t qva, rpmts ts, const char * ar
+
+ if (mi == NULL) {
+ struct stat sb;
+- if (lstat(fn, &sb) != 0)
++ char * full_fn = rpmGetPath(rpmtsRootDir(ts), fn, NULL);
++ if (lstat(full_fn, &sb) != 0)
+ rpmlog(RPMLOG_ERR, _("file %s: %s\n"), fn, strerror(errno));
+ else
+ rpmlog(RPMLOG_NOTICE,
+ _("file %s is not owned by any package\n"), fn);
++ free(full_fn);
+ }
+
+ free(fn);
+--
+2.27.0
+