From 40b354e4cc67f1fedf9d4c2ce8d050a9ac68a643 Mon Sep 17 00:00:00 2001 From: Justus Winter <4winter@informatik.uni-hamburg.de> Date: Wed, 7 Jan 2015 16:00:06 +0100 Subject: auth: remove implicit assumption about the bootstrap process The current code assumes that it can speak the startup protocol over its bootstrap port. * auth/auth.c (main): Generalize by trying to use `/servers/startup' before falling back to the bootstrap port. --- auth/auth.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'auth') diff --git a/auth/auth.c b/auth/auth.c index a7a188a2..d5ef5876 100644 --- a/auth/auth.c +++ b/auth/auth.c @@ -25,6 +25,7 @@ #include #include #include +#include #include #include #include @@ -482,6 +483,7 @@ main (int argc, char **argv) { error_t err; mach_port_t boot; + mach_port_t startup; process_t proc; mach_port_t hostpriv, masterdev; struct authhandle *firstauth; @@ -518,10 +520,21 @@ main (int argc, char **argv) _hurd_port_set (&_hurd_ports[INIT_PORT_PROC], proc); _hurd_proc_init (argv, NULL, 0); + startup = file_name_lookup (_SERVERS_STARTUP, 0, 0); + if (! MACH_PORT_VALID (startup)) + { + error (0, errno, "%s", _SERVERS_STARTUP); + /* Fall back to using the bootstrap port as before. */ + startup = boot; + } + /* Init knows intimately that we will be ready for messages as soon as this returns. */ - startup_essential_task (boot, mach_task_self (), MACH_PORT_NULL, "auth", + startup_essential_task (startup, mach_task_self (), MACH_PORT_NULL, "auth", hostpriv); + + if (startup != boot) + mach_port_deallocate (mach_task_self (), startup); mach_port_deallocate (mach_task_self (), boot); mach_port_deallocate (mach_task_self (), hostpriv); -- cgit v1.2.3