[PATCH] sanity check, to prevent overlapping partitions from being partly reported as free

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

i noticed wrongly reported free space when looking with cfdisk on
an USB drive prepared with the latest alpine *.iso[1].

Feel free to apply below patch, which fixed the issue for me.

Greetings
  Fabian

[1]: http://dl-cdn.alpinelinux.org/alpine/v3.9/releases/x86/alpine-extended-3.9.0-x86.iso

---
 libfdisk/src/table.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/libfdisk/src/table.c b/libfdisk/src/table.c
index 4881db68e..3d32695f4 100644
--- a/libfdisk/src/table.c
+++ b/libfdisk/src/table.c
@@ -582,7 +582,7 @@ int fdisk_get_freespaces(struct fdisk_context *cxt, struct fdisk_table **tb)
 {
 	int rc = 0;
 	size_t nparts = 0;
-	fdisk_sector_t last, grain;
+	fdisk_sector_t last, grain, pa_end;
 	struct fdisk_table *parts = NULL;
 	struct fdisk_partition *pa;
 	struct fdisk_iter itr;
@@ -632,7 +632,11 @@ int fdisk_get_freespaces(struct fdisk_context *cxt, struct fdisk_table **tb)
 		/* add gaps between logical partitions */
 		if (fdisk_partition_is_container(pa))
 			rc = check_container_freespace(cxt, parts, *tb, pa);
-		last = fdisk_partition_get_end(pa);
+		if(fdisk_partition_has_end(pa)) {
+			pa_end = fdisk_partition_get_end(pa);
+			if(pa_end > last)
+				last = pa_end;
+		}
 		nparts++;
 	}
 
-- 
2.12.3




[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux