]> sourceware.org Git - lvm2.git/commitdiff
Revert "hints: rewrite function"
authorDavid Teigland <teigland@redhat.com>
Thu, 14 Nov 2019 18:15:05 +0000 (12:15 -0600)
committerDavid Teigland <teigland@redhat.com>
Thu, 14 Nov 2019 18:15:05 +0000 (12:15 -0600)
This reverts commit 70fb31b5d6863248b5adfb2581b706cbb158b30e.

lib/label/hints.c

index 45ab2ff6ff75f33e6dacbc5f5ba5e9d3e69ce64a..f8e8f4520cf9828157ce48e241a58bea4a9801f1 100644 (file)
@@ -586,29 +586,42 @@ static void _filter_to_str(struct cmd_context *cmd, int filter_cfg, char **strp)
        char *str;
        int pos = 0;
        int len = 0;
+       int ret;
 
        *strp = NULL;
 
-       if (!(cn = find_config_tree_array(cmd, filter_cfg, NULL)))
+       if (!(cn = find_config_tree_array(cmd, filter_cfg, NULL))) {
                /* shouldn't happen because default is a|*| */
                return;
+       }
+
+       for (cv = cn->v; cv; cv = cv->next) {
+               if (cv->type != DM_CFG_STRING)
+                       continue;
 
-       for (cv = cn->v; cv; cv = cv->next)
-               if (cv->type == DM_CFG_STRING)
-                       len += strlen(cv->v.str) + 1;
+               len += (strlen(cv->v.str) + 1);
+       }
+       len++;
+
+       if (len == 1) {
+               /* shouldn't happen because default is a|*| */
+               return;
+       }
 
-       if (!len++ || !(str = malloc(len)))
+       if (!(str = malloc(len)))
                return;
+       memset(str, 0, len);
 
-       for (cv = cn->v; cv; cv = cv->next)
-               if (cv->type == DM_CFG_STRING) {
-                       len = strlen(cv->v.str);
-                       memcpy(str + pos, cv->v.str, len);
-                       pos += len;
-                       str[pos++] = 0;
-               }
+       for (cv = cn->v; cv; cv = cv->next) {
+               if (cv->type != DM_CFG_STRING)
+                       continue;
 
-       str[pos] = 0;
+               ret = snprintf(str + pos, len - pos, "%s", cv->v.str);
+
+               if (ret >= len - pos)
+                       break;
+               pos += ret;
+       }
 
        *strp = str;
 }
This page took 0.04287 seconds and 5 git commands to generate.