Module Name:    src
Committed By:   martin
Date:           Sat Jul 17 11:32:50 UTC 2021

Modified Files:
        src/usr.sbin/sysinst: gpt.c partman.c

Log Message:
PR 56310: avoid assert() failures (or crashes) when the runtime addition
of a wedge fails (for whatever reasons).


To generate a diff of this commit:
cvs rdiff -u -r1.23 -r1.24 src/usr.sbin/sysinst/gpt.c
cvs rdiff -u -r1.51 -r1.52 src/usr.sbin/sysinst/partman.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/usr.sbin/sysinst/gpt.c
diff -u src/usr.sbin/sysinst/gpt.c:1.23 src/usr.sbin/sysinst/gpt.c:1.24
--- src/usr.sbin/sysinst/gpt.c:1.23	Sun Jan 31 22:45:46 2021
+++ src/usr.sbin/sysinst/gpt.c	Sat Jul 17 11:32:50 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: gpt.c,v 1.23 2021/01/31 22:45:46 rillig Exp $	*/
+/*	$NetBSD: gpt.c,v 1.24 2021/07/17 11:32:50 martin Exp $	*/
 
 /*
  * Copyright 2018 The NetBSD Foundation, Inc.
@@ -1404,8 +1404,11 @@ gpt_get_part_device(const struct disk_pa
 		usage = plain_name;
 	if (usage == plain_name || usage == raw_dev_name)
 		life = true;
-	if (!(p->gp_flags & GPEF_WEDGE) && life)
-		gpt_add_wedge(arg->disk, p);
+	if (!(p->gp_flags & GPEF_WEDGE) && life &&
+	    !gpt_add_wedge(arg->disk, p)) {
+		devname[0] = 0;
+		return false;
+	}
 
 	switch (usage) {
 	case logical_name:

Index: src/usr.sbin/sysinst/partman.c
diff -u src/usr.sbin/sysinst/partman.c:1.51 src/usr.sbin/sysinst/partman.c:1.52
--- src/usr.sbin/sysinst/partman.c:1.51	Sun Jan 31 22:45:46 2021
+++ src/usr.sbin/sysinst/partman.c	Sat Jul 17 11:32:50 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: partman.c,v 1.51 2021/01/31 22:45:46 rillig Exp $ */
+/*	$NetBSD: partman.c,v 1.52 2021/07/17 11:32:50 martin Exp $ */
 
 /*
  * Copyright 2012 Eugene Lozovoy
@@ -2847,13 +2847,13 @@ pm_menufmt(menudesc *m, int opt, void *a
 				dev_status);
 			break;
 		case PM_PART:
-			if (parts->pscheme->get_part_device != NULL)
-				parts->pscheme->get_part_device(
-				    parts,  part_num,
-				    dev, sizeof dev, NULL, plain_name, false,
-				    true);
-			else
-				strcpy(dev, "-");
+			if (parts->pscheme->get_part_device == NULL ||
+			    !parts->pscheme->get_part_device(
+				parts,  part_num,
+				dev, sizeof dev, NULL, plain_name, false,
+				true))
+					strcpy(dev, "-");
+
 			parts->pscheme->get_part_info(parts,
 			    part_num, &info);
 			if (pm_cur->mounted != NULL &&

Reply via email to