From e51ffd2e33c46713e49b6229f5e6f8457a36622a Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Fri, 18 Jun 2021 14:06:27 +0200 Subject: [PATCH] virISCSIDirectUpdateTargets: Rework to simplify cleanup and return GStrv MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Count the elements in advance rather than using VIR_APPEND_ELEMENT and ensure that there's a NULL terminator for the string list so it's GStrv compatible. Signed-off-by: Peter Krempa Reviewed-by: Ján Tomko --- src/storage/storage_backend_iscsi_direct.c | 29 ++++++++-------------- 1 file changed, 11 insertions(+), 18 deletions(-) diff --git a/src/storage/storage_backend_iscsi_direct.c b/src/storage/storage_backend_iscsi_direct.c index 263db835ae..7b2e62f2b8 100644 --- a/src/storage/storage_backend_iscsi_direct.c +++ b/src/storage/storage_backend_iscsi_direct.c @@ -420,37 +420,30 @@ virISCSIDirectUpdateTargets(struct iscsi_context *iscsi, size_t *ntargets, char ***targets) { - int ret = -1; struct iscsi_discovery_address *addr; struct iscsi_discovery_address *tmp_addr; - size_t tmp_ntargets = 0; - char **tmp_targets = NULL; + size_t i = 0; + + *ntargets = 0; if (!(addr = iscsi_discovery_sync(iscsi))) { virReportError(VIR_ERR_INTERNAL_ERROR, _("Failed to discover session: %s"), iscsi_get_error(iscsi)); - return ret; + return -1; } - for (tmp_addr = addr; tmp_addr; tmp_addr = tmp_addr->next) { - g_autofree char *target = NULL; + for (tmp_addr = addr; tmp_addr; tmp_addr = tmp_addr->next) + (*ntargets)++; - target = g_strdup(tmp_addr->target_name); + *targets = g_new0(char *, *ntargets + 1); - if (VIR_APPEND_ELEMENT(tmp_targets, tmp_ntargets, target) < 0) - goto cleanup; - } + for (tmp_addr = addr; tmp_addr; tmp_addr = tmp_addr->next) + *targets[i++] = g_strdup(tmp_addr->target_name); - *targets = g_steal_pointer(&tmp_targets); - *ntargets = tmp_ntargets; - tmp_ntargets = 0; - - ret = 0; - cleanup: iscsi_free_discovery_data(iscsi, addr); - virStringListFreeCount(tmp_targets, tmp_ntargets); - return ret; + + return 0; } static int