From edd5465c598b7aebf3ab1a1b51848bc50b7b7d9b Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Mon, 2 Jun 2025 10:26:38 +0200 Subject: [PATCH] esx: Avoid corner case where esxUtil_ParseDatastorePath could be called with NULL 'datastorePath' The generated code which parses the data from XML in esxVI_LookupDatastoreContentByDatastoreName can fill the 'folderPath' property with NULL if it were missing from the input XML. While this is not likely when talking to esx it is a possible outcome. Skipp NULL results. All other code paths already ensure that the function is not called with NULL. Closes: https://gitlab.com/libvirt/libvirt/-/issues/776 Signed-off-by: Peter Krempa Reviewed-by: Pavel Hrdina --- src/esx/esx_storage_backend_vmfs.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/esx/esx_storage_backend_vmfs.c b/src/esx/esx_storage_backend_vmfs.c index 145aff0c9c..8e13201fe2 100644 --- a/src/esx/esx_storage_backend_vmfs.c +++ b/src/esx/esx_storage_backend_vmfs.c @@ -616,6 +616,9 @@ esxStoragePoolListVolumes(virStoragePoolPtr pool, char **const names, searchResults = searchResults->_next) { g_autofree char *directoryAndFileName = NULL; + if (!searchResults->folderPath) + continue; + if (esxUtil_ParseDatastorePath(searchResults->folderPath, NULL, NULL, &directoryAndFileName) < 0) { goto cleanup; @@ -759,6 +762,9 @@ esxStorageVolLookupByKey(virConnectPtr conn, const char *key) searchResults = searchResults->_next) { g_autofree char *directoryAndFileName = NULL; + if (searchResults->folderPath) + continue; + if (esxUtil_ParseDatastorePath(searchResults->folderPath, NULL, NULL, &directoryAndFileName) < 0) { goto cleanup; -- 2.47.3