Fix handling of 'N-* 100' template entries.
authorkrw <krw@openbsd.org>
Thu, 29 Jun 2023 20:10:11 +0000 (20:10 +0000)
committerkrw <krw@openbsd.org>
Thu, 29 Jun 2023 20:10:11 +0000 (20:10 +0000)
'N-* 100' means a max of all 'extra' disk space not all disk
space.

Fixes templates with partitions after a 'N-* 100' entry.

Reported by anton@

sbin/disklabel/editor.c

index a849003..998f994 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: editor.c,v 1.412 2023/06/28 12:12:48 krw Exp $        */
+/*     $OpenBSD: editor.c,v 1.413 2023/06/29 20:10:11 krw Exp $        */
 
 /*
  * Copyright (c) 1997-2000 Todd C. Miller <millert@openbsd.org>
@@ -677,11 +677,12 @@ allocate_space(struct disklabel *lp, const struct alloc_table *alloc_table)
 
        mpfree(mountpoints, KEEP);
        for (i = 0; i < alloc_table->sz; i++) {
-               if (sa[i].rate < 100) {
+               if (sa[i].rate == 100)
+                       maxsz = sa[i].minsz + xtrablks;
+               else
                        maxsz = sa[i].minsz + (xtrablks / 100) * sa[i].rate;
-                       if (maxsz < sa[i].maxsz)
-                               sa[i].maxsz = maxsz;
-               }
+               if (maxsz < sa[i].maxsz)
+                       sa[i].maxsz = maxsz;
                if (allocate_partition(lp, &sa[i])) {
                        mpfree(mountpoints, KEEP);
                        return 1;