From: Michal Privoznik Date: Wed, 22 Mar 2023 11:39:21 +0000 (+0100) Subject: qemu_shim: Require absolute path for root directory X-Git-Tag: v9.2.0-rc1~12 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b407897ea9502d0d03cc54ce34afbf2e0ec98ff8;p=thirdparty%2Flibvirt.git qemu_shim: Require absolute path for root directory The virConnectOpen(), well virConnectOpenInternal() reports an error if embed root is not an absolute path. This is a fair requirement, but our qemu_shim doesn't check this requirement and passes the path to mkdir(), only to fail later on, leaving the empty directory behind: $ ls -d asd ls: cannot access 'asd': No such file or directory $ virt-qemu-run -r asd whatever.xml virt-qemu-run: cannot open qemu:///embed?root=asd: unsupported configuration: root path must be absolute $ ls -d asd asd Signed-off-by: Michal Privoznik Reviewed-by: Kristina Hanicova --- diff --git a/src/qemu/qemu_shim.c b/src/qemu/qemu_shim.c index b642f6175a..7fdd69b538 100644 --- a/src/qemu/qemu_shim.c +++ b/src/qemu/qemu_shim.c @@ -214,10 +214,18 @@ int main(int argc, char **argv) } tmproot = true; - } else if (g_mkdir_with_parents(root, 0755) < 0) { - g_printerr("%s: cannot create dir: %s\n", - argv[0], g_strerror(errno)); - goto cleanup; + } else { + if (!g_path_is_absolute(root)) { + g_printerr("%s: the root directory must be an absolute path\n", + argv[0]); + goto cleanup; + } + + if (g_mkdir_with_parents(root, 0755) < 0) { + g_printerr("%s: cannot create dir: %s\n", + argv[0], g_strerror(errno)); + goto cleanup; + } } if (chmod(root, 0755) < 0) {