summaryrefslogtreecommitdiff
path: root/usr/src/cmd/boot
diff options
context:
space:
mode:
authorToomas Soome <tsoome@me.com>2018-12-03 13:52:28 -0800
committerJoshua M. Clulow <josh@sysmgr.org>2018-12-03 13:52:29 -0800
commit135ec7c89feffe489942d5c5a37e69f4efb7d7bb (patch)
tree454281779af52b323be894bf37ab23681f388e1a /usr/src/cmd/boot
parent9dded1d9015db0b91278731dfec380891ea0eb14 (diff)
downloadillumos-gate-135ec7c89feffe489942d5c5a37e69f4efb7d7bb.tar.gz
10014 bootadm: menu_free() is accessing freed memory
Reviewed by: Andrew Stormont <andyjstormont@gmail.com> Reviewed by: Robert Mustacchi <rm@joyent.com> Reviewed by: Andy Fiddaman <omnios@citrus-it.net> Reviewed by: Gergő Mihály Doma <domag02@gmail.com> Approved by: Joshua M. Clulow <josh@sysmgr.org>
Diffstat (limited to 'usr/src/cmd/boot')
-rw-r--r--usr/src/cmd/boot/bootadm/bootadm_loader.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/usr/src/cmd/boot/bootadm/bootadm_loader.c b/usr/src/cmd/boot/bootadm/bootadm_loader.c
index 2a2a95c99e..3920355930 100644
--- a/usr/src/cmd/boot/bootadm/bootadm_loader.c
+++ b/usr/src/cmd/boot/bootadm/bootadm_loader.c
@@ -354,7 +354,9 @@ void
menu_free(struct menu_lst *menu)
{
menu_entry_t *entry;
- STAILQ_FOREACH(entry, menu, me_next) {
+
+ while (!STAILQ_EMPTY(menu)) {
+ entry = STAILQ_FIRST(menu);
STAILQ_REMOVE_HEAD(menu, me_next);
free(entry->me_title);
free(entry->me_type);