From d094b9b6950402cc8187f6a82d3d403d3892e7e7 Mon Sep 17 00:00:00 2001 From: Toomas Soome Date: Tue, 29 Nov 2022 14:12:24 +0200 Subject: 15201 bootadm list-menu segfaults for non-existent datasets Reviewed by: Marcel Telka Reviewed by: Robert Mustacchi Reviewed by: Andrew Stormont Approved by: Dan McDonald --- usr/src/cmd/boot/bootadm/bootadm_loader.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/usr/src/cmd/boot/bootadm/bootadm_loader.c b/usr/src/cmd/boot/bootadm/bootadm_loader.c index 2d15fdbc42..a9dde19132 100644 --- a/usr/src/cmd/boot/bootadm/bootadm_loader.c +++ b/usr/src/cmd/boot/bootadm/bootadm_loader.c @@ -766,6 +766,11 @@ bam_mount_be(menu_entry_t *entry, char **dir) if (strcmp(be_node->be_root_ds, entry->me_bootfs) == 0) break; + if (be_node == NULL) { + ret = BE_ERR_BE_NOENT; + goto out; + } + if (nvlist_add_string(be_attrs, BE_ATTR_ORIG_BE_NAME, be_node->be_node_name) != 0) { ret = BE_ERR_NOMEM; @@ -843,7 +848,8 @@ list_menu_entry(menu_entry_t *entry, char *setting) (void) rmdir(dir); free(dir); } - bam_error(_("%s is not mounted\n"), entry->me_title); + bam_error(_("%s is not mounted: %s\n"), entry->me_title, + be_err_to_str(mounted)); return (BAM_ERROR); } -- cgit v1.2.3