]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
libfdisk: fix script parser
authorKarel Zak <kzak@redhat.com>
Tue, 7 Oct 2014 13:33:18 +0000 (15:33 +0200)
committerKarel Zak <kzak@redhat.com>
Tue, 7 Oct 2014 13:33:18 +0000 (15:33 +0200)
Signed-off-by: Karel Zak <kzak@redhat.com>
libfdisk/src/script.c

index c595f7cb806c035e117eb6919f0d9aa7721e563b..e01d8f8f0c74f8a3e19b454b1483beb5bf594706 100644 (file)
@@ -626,7 +626,12 @@ static int parse_script_line(struct fdisk_script *dp, char *s)
                        }
 
                } else if (!strncasecmp(p, "bootable", 8)) {
+                       char *x;
+
                        p += 8;
+                       x = next_separator(p);
+                       if (x)
+                               p = x + 1;
                        pa->boot = 1;
 
                } else if (!strncasecmp(p, "attrs=", 6)) {
@@ -672,10 +677,6 @@ static int parse_script_line(struct fdisk_script *dp, char *s)
                        rc = -EINVAL;
                        break;
                }
-
-               while (isblank(*p)) p++;
-               if (*p == ',' || *p == ';')
-                       p++;
        }
 
        if (!rc)
@@ -757,6 +758,7 @@ static int parse_commas_line(struct fdisk_script *dp, char *s)
 
        while (rc == 0 && p && *p) {
                uint64_t num;
+               char *begin;
 
                while (isblank(*p)) p++;
                if (!*p)
@@ -764,6 +766,7 @@ static int parse_commas_line(struct fdisk_script *dp, char *s)
                item++;
 
                DBG(SCRIPT, ul_debugobj(dp, " parsing item %d ('%s')", item, p));
+               begin = p;
 
                switch (item) {
                case ITEM_START:
@@ -829,8 +832,7 @@ static int parse_commas_line(struct fdisk_script *dp, char *s)
                        break;
                }
 
-               while (isblank(*p)) p++;
-               if (*p == ',' || *p == ';')
+               if (begin == p)
                        p++;
        }