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 &&