The g_path_is_absolute() considers more situations
than just a simply "path[0] == '/'".
Related issue:
https://gitlab.com/libvirt/libvirt/-/issues/12
Signed-off-by: Luke Yue <lukedyue(a)gmail.com>
---
src/conf/backup_conf.c | 2 +-
src/conf/snapshot_conf.c | 2 +-
src/conf/storage_source_conf.c | 2 +-
src/lxc/lxc_native.c | 2 +-
src/qemu/qemu_block.c | 2 +-
src/storage_file/storage_source.c | 2 +-
src/util/vircommand.c | 2 +-
src/vbox/vbox_snapshot_conf.c | 2 +-
src/vmware/vmware_conf.c | 2 +-
src/vmware/vmware_driver.c | 2 +-
tests/virtestmock.c | 2 +-
tools/virt-login-shell-helper.c | 2 +-
12 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/src/conf/backup_conf.c b/src/conf/backup_conf.c
index 2de77a59c0..7f54a25ff6 100644
--- a/src/conf/backup_conf.c
+++ b/src/conf/backup_conf.c
@@ -262,7 +262,7 @@ virDomainBackupDefParse(xmlXPathContextPtr ctxt,
}
if (def->server->transport == VIR_STORAGE_NET_HOST_TRANS_UNIX &&
- def->server->socket[0] != '/') {
+ !g_path_is_absolute(def->server->socket)) {
virReportError(VIR_ERR_XML_ERROR,
_("backup socket path '%s' must be
absolute"),
def->server->socket);
diff --git a/src/conf/snapshot_conf.c b/src/conf/snapshot_conf.c
index 07c9ea7af7..df3f2a4c63 100644
--- a/src/conf/snapshot_conf.c
+++ b/src/conf/snapshot_conf.c
@@ -363,7 +363,7 @@ virDomainSnapshotDefParse(xmlXPathContextPtr ctxt,
def->file = g_steal_pointer(&memoryFile);
/* verify that memory path is absolute */
- if (def->file && def->file[0] != '/') {
+ if (def->file && !g_path_is_absolute(def->file)) {
virReportError(VIR_ERR_XML_ERROR,
_("memory snapshot file path (%s) must be absolute"),
def->file);
diff --git a/src/conf/storage_source_conf.c b/src/conf/storage_source_conf.c
index 05939181d6..5ca06fa30a 100644
--- a/src/conf/storage_source_conf.c
+++ b/src/conf/storage_source_conf.c
@@ -1213,7 +1213,7 @@ virStorageSourceIsRelative(virStorageSource *src)
case VIR_STORAGE_TYPE_FILE:
case VIR_STORAGE_TYPE_BLOCK:
case VIR_STORAGE_TYPE_DIR:
- return src->path[0] != '/';
+ return !g_path_is_absolute(src->path);
case VIR_STORAGE_TYPE_NETWORK:
case VIR_STORAGE_TYPE_VOLUME:
diff --git a/src/lxc/lxc_native.c b/src/lxc/lxc_native.c
index 083fb50af7..4bdd960e23 100644
--- a/src/lxc/lxc_native.c
+++ b/src/lxc/lxc_native.c
@@ -261,7 +261,7 @@ lxcAddFstabLine(virDomainDef *def, lxcFstab *fstab)
if (!options)
return -1;
- if (fstab->dst[0] != '/') {
+ if (!g_path_is_absolute(fstab->dst)) {
dst = g_strdup_printf("/%s", fstab->dst);
} else {
dst = g_strdup(fstab->dst);
diff --git a/src/qemu/qemu_block.c b/src/qemu/qemu_block.c
index a972e1e368..c815daf1e6 100644
--- a/src/qemu/qemu_block.c
+++ b/src/qemu/qemu_block.c
@@ -427,7 +427,7 @@ qemuBlockStorageSourceGetURI(virStorageSource *src)
if (src->volume) {
uri->path = g_strdup_printf("/%s/%s", src->volume,
src->path);
} else {
- uri->path = g_strdup_printf("%s%s", src->path[0] ==
'/' ? "" : "/",
+ uri->path = g_strdup_printf("%s%s",
g_path_is_absolute(src->path) ? "" : "/",
src->path);
There's a soft limit on the length of a line: 80 chars. This means that
if possible then the limit should be honoured. In this case, the
arguments can go on separate lines.
I've found couple of other places which you didn't fix. I'll squash them
into your patch and push.
Reviewed-by: Michal Privoznik <mprivozn(a)redhat.com>
Michal