tech-kern archive

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

[PATCH 1/3] biosdisk: Fix handling of unknown partition types



On unknown partition types we end up dereferencing
a random pointer. Instead ensure that pointer is NULL
and skip it when it's NULL
---
 sys/arch/i386/stand/efiboot/efidisk.c | 2 +-
 sys/arch/i386/stand/lib/biosdisk.c    | 1 +
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/sys/arch/i386/stand/efiboot/efidisk.c b/sys/arch/i386/stand/efiboot/efidisk.c
index 57c399aad71..5381ab736ac 100644
--- a/sys/arch/i386/stand/efiboot/efidisk.c
+++ b/sys/arch/i386/stand/efiboot/efidisk.c
@@ -393,7 +393,7 @@ efidisk_get_efi_system_partition(int dev, int *partition)
 			continue;
 		if (part[i].fstype == FS_UNUSED)
 			continue;
-		if (guid_is_equal(part[i].guid->guid, &GET_efi))
+		if (part[i].guid && guid_is_equal(part[i].guid->guid, &GET_efi))
 			break;
 	}
 	dealloc_biosdisk_part(part, nparts);
diff --git a/sys/arch/i386/stand/lib/biosdisk.c b/sys/arch/i386/stand/lib/biosdisk.c
index 02a9dcf0fa1..d8914c1647b 100644
--- a/sys/arch/i386/stand/lib/biosdisk.c
+++ b/sys/arch/i386/stand/lib/biosdisk.c
@@ -400,6 +400,7 @@ check_gpt(struct biosdisk *d, daddr_t rf_offset, daddr_t sector)
 	entblk = gpth.hdr_lba_table + rf_offset;
 	crc = crc32(0, NULL, 0);
 
+	memset(d->part, 0, sizeof(d->part));
 	j = 0;
 	ep = (const struct gpt_ent *)d->buf;
 
-- 
2.48.1



Home | Main Index | Thread Index | Old Index