[PATCH 1/9] virDomainDiskAddISCSIPoolSourceHost: Sanitize handling of string list

Peter Krempa pkrempa at redhat.com
Wed Feb 5 13:40:52 UTC 2020


Use virStringSplitCount instead of virStringSplit so that we can drop
the call to virStringListLength and use VIR_AUTOSTRINGLIST to declare
it and allow removal of the cleanup section.

Signed-off-by: Peter Krempa <pkrempa at redhat.com>
---
 src/conf/domain_conf.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index c95bd34fb5..6124c7520c 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -31327,7 +31327,8 @@ virDomainDiskAddISCSIPoolSourceHost(virDomainDiskDefPtr def,
                                     virStoragePoolDefPtr pooldef)
 {
     int ret = -1;
-    char **tokens = NULL;
+    VIR_AUTOSTRINGLIST tokens = NULL;
+    size_t ntokens;

     /* Only support one host */
     if (pooldef->source.nhost != 1) {
@@ -31348,10 +31349,10 @@ virDomainDiskAddISCSIPoolSourceHost(virDomainDiskDefPtr def,
         pooldef->source.hosts[0].port : 3260;

     /* iscsi volume has name like "unit:0:0:1" */
-    if (!(tokens = virStringSplit(def->src->srcpool->volume, ":", 0)))
+    if (!(tokens = virStringSplitCount(def->src->srcpool->volume, ":", 0, &ntokens)))
         goto cleanup;

-    if (virStringListLength((const char * const *)tokens) != 4) {
+    if (ntokens != 4) {
         virReportError(VIR_ERR_INTERNAL_ERROR,
                        _("unexpected iscsi volume name '%s'"),
                        def->src->srcpool->volume);
@@ -31373,7 +31374,6 @@ virDomainDiskAddISCSIPoolSourceHost(virDomainDiskDefPtr def,
     ret = 0;

  cleanup:
-    virStringListFree(tokens);
     return ret;
 }

-- 
2.24.1




More information about the libvir-list mailing list