From 1bd2f9d9ae56c48e5f10e1b9a0b386dc1ce0c8fb Mon Sep 17 00:00:00 2001 From: weiwei_tiantian Date: Wed, 26 Jan 2022 15:36:53 +0800 Subject: [PATCH] add check for unknown file type (cherry picked from commit 4907cf39127c4a35facc199cb0af3785e098da8a) --- backport-add-check-for-unknown-filetype.patch | 45 +++++++++++++++++++ libosinfo.spec | 6 ++- 2 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 backport-add-check-for-unknown-filetype.patch diff --git a/backport-add-check-for-unknown-filetype.patch b/backport-add-check-for-unknown-filetype.patch new file mode 100644 index 0000000..0422d66 --- /dev/null +++ b/backport-add-check-for-unknown-filetype.patch @@ -0,0 +1,45 @@ +From d3b1587f7b77b630bae8ab3f4760eda69bd7fe66 Mon Sep 17 00:00:00 2001 +From: Victor Toso +Date: Fri, 26 Nov 2021 17:36:09 +0100 +Subject: [PATCH] loader: add check for unknown file type + +So we can provide a meaningful error message in case the provided path +is not accessible to running process. + +e.g: running HOME=/root osinfo-query os we would get + `Error loading OS data: Unexpected file type` +and now we get + `Error loading OS data: Can't read path /root/.config/osinfo` + +This error was first hit with v2v [0] that was leaking $USER and $HOME +of root user when osinfo-query as vsdm user with `sudo -c vdsm`. The +example above is a simple way to show lack of permision of +osinfo-query to read the root's $HOME. + +[0] https://bugzilla.redhat.com/show_bug.cgi?id=1901423 + +Related: https://bugzilla.redhat.com/show_bug.cgi?id=1902720 +Signed-off-by: Victor Toso +--- + osinfo/osinfo_loader.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/osinfo/osinfo_loader.c b/osinfo/osinfo_loader.c +index 972f2a4..4403b75 100644 +--- a/osinfo/osinfo_loader.c ++++ b/osinfo/osinfo_loader.c +@@ -2356,6 +2356,11 @@ static void osinfo_loader_find_files(OsinfoLoader *loader, + } + g_object_unref(ents); + g_list_free(children); ++ } else if (type == G_FILE_TYPE_UNKNOWN) { ++ g_autofree gchar *path = g_file_get_path(file); ++ g_autofree gchar *msg = g_strdup_printf("Can't read path %s", path); ++ OSINFO_LOADER_SET_ERROR(&error, msg); ++ g_propagate_error(err, error); + } else { + OSINFO_LOADER_SET_ERROR(&error, "Unexpected file type"); + g_propagate_error(err, error); +-- +2.27.0 + diff --git a/libosinfo.spec b/libosinfo.spec index 6d2dbe6..4ccc985 100644 --- a/libosinfo.spec +++ b/libosinfo.spec @@ -1,6 +1,6 @@ Name: libosinfo Version: 1.8.0 -Release: 1 +Release: 2 Summary: A library for managing OS information for virtualization License: LGPLv2+ URL: https://libosinfo.org/ @@ -16,7 +16,7 @@ Requires: osinfo-db >= 20180920-1 Patch0001: 0001-db-Force-anchored-patterns-when-matching-regex.patch Patch6002: fix-build-error-for-CVE-2019-13313.patch - +Patch6003: backport-add-check-for-unknown-filetype.patch Provides: %{name}-vala Obsoletes: %{name}-vala @@ -95,6 +95,8 @@ rm -rf %{buildroot} %files lang -f %{name}.lang %changelog +* Wed Jan 26 2022 tianwei - 1.8.0-2 +- add check for unknown file type * Tue Feb 2 2021 liudabo - 1.8.0-1 - upgrade version to 1.8.0 -- Gitee