From dfd5134090dd80957dce5a65b467aafaff47ca3b Mon Sep 17 00:00:00 2001 From: Justus Winter Date: Tue, 1 Nov 2016 12:29:25 +0100 Subject: boot: Use the smallest possible name when inserting rights. * boot/userland-boot.c (boot_script_insert_right): Use the smallest possible name instead of the local name. --- boot/userland-boot.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'boot/userland-boot.c') diff --git a/boot/userland-boot.c b/boot/userland-boot.c index d048c00e..7b856147 100644 --- a/boot/userland-boot.c +++ b/boot/userland-boot.c @@ -90,14 +90,23 @@ boot_script_free_task (task_t task, int aborting) int boot_script_insert_right (struct cmd *cmd, mach_port_t port, mach_port_t *name) { - error_t err = mach_port_insert_right (cmd->task, - port, port, MACH_MSG_TYPE_COPY_SEND); + error_t err; + + *name = MACH_PORT_NULL; + do + { + *name += 1; + err = mach_port_insert_right (cmd->task, + *name, port, MACH_MSG_TYPE_COPY_SEND); + } + while (err == KERN_NAME_EXISTS); + if (err) { error (0, err, "%s: mach_port_insert_right", cmd->path); return BOOT_SCRIPT_MACH_ERROR; } - *name = port; + return 0; } -- cgit v1.2.3