From: Ján Tomko <[email protected]>

If parsed number of extents is 0, the calculated buffer size
won't hold the first regex_unit.

Closes: https://gitlab.com/libvirt/libvirt/-/work_items/913
Signed-off-by: Ján Tomko <[email protected]>
---
 src/storage/storage_backend_logical.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/storage/storage_backend_logical.c 
b/src/storage/storage_backend_logical.c
index 51e9337820..81f9d62d8b 100644
--- a/src/storage/storage_backend_logical.c
+++ b/src/storage/storage_backend_logical.c
@@ -161,12 +161,12 @@ virStorageBackendLogicalParseVolExtents(virStorageVolDef 
*vol,
 
     /* Allocate space for 'nextents' regex_unit strings plus a comma for each 
*/
     regex = g_new0(char, nextents * (strlen(regex_unit) + 1) + 1);
-    strcat(regex, regex_unit);
-    for (i = 1; i < nextents; i++) {
+    for (i = 0; i < nextents; i++) {
         /* "," is the separator of "devices" field */
-        strcat(regex, ",");
         strcat(regex, regex_unit);
+        strcat(regex, ",");
     }
+    regex[strlen(regex) - 1] = '\0';
 
     re = g_regex_new(regex, 0, 0, &err);
     if (!re) {
-- 
2.55.0

Reply via email to