In the named-fields script format, the colon is used as the separator
between the device name and other values. The device name may also
contain colons. This commit ensures it is treated as a separator only
when there is a space before or after the colon.
Note that the device name is optional and may be omitted. There is no
escaping for problematic characters in the name. Use " : " as the
separator.
Fixes: https://github.com/util-linux/util-linux/issues/3723
Signed-off-by: Karel Zak <kzak@redhat.com>
(cherry picked from commit
4eab9175dfd62c1d1a0bbc43a49ca8a85e9adac7)
fdisk_partition_partno_follow_default(pa, 1);
/* set partno */
- p = strchr(s, ':');
+ p = strstr(s, " : "); /* device : start= */
+ if (!p)
+ p = strstr(s, " :"); /* device :start= */
+ if (!p)
+ p = strstr(s, ": "); /* device: start= */
+ if (!p)
+ p = strchr(s, ':');
+
x = strchr(s, '=');
if (p && (!x || p < x)) {
*p = '\0';
fdisk_partition_partno_follow_default(pa, 0);
fdisk_partition_set_partno(pa, pno);
}
+ if (*p == ':')
+ p++;
} else
p = s;