summaryrefslogtreecommitdiff
path: root/boot/Makefile
diff options
context:
space:
mode:
authorJustus Winter <justus@gnupg.org>2016-10-23 11:48:06 +0200
committerJustus Winter <justus@gnupg.org>2016-11-01 16:32:47 +0100
commit8c0e65b6b2db9946153ed736e66d4e613875deb6 (patch)
tree52b6beabd42f45f61c2f6775b6190559db1d1179 /boot/Makefile
parent7ab8e74f1331b70dd52e604d0010a49fabf9e549 (diff)
boot: Allow unprivileged users to boot Subhurds.
Previously, boot handed privileged kernel ports to Subhurds. This made boot unusable for unprivileged users, and allowed Subhurds to wreak havoc on the whole system. Fix this by handing out pseudo ports instead of the privileged ports. * NEWS: Update. * boot/Makefile (MIGSTUBS): Build stubs for the new kernel interfaces. (MIGSFLAGS): Include mutation file. (HURDLIBS): Link against libihash. * boot/boot.c (privileged, want_privileged): New variables. (pseudo_privileged_host_port): New variable. (pseudo_pset, pseudo_kernel): Likewise. (task_notification_port): Likewise. (dead_task_notification_port): Likewise. (boot_demuxer): Handle new protocols. (OPT_PRIVILEGED): New macro. (options): Add flag '--privileged' to enable the old mode. (parse_opt): Handle new flag. (allocate_pseudo_ports): New function. (main): Handle new flag. If not running privileged, allocate more pseudo ports to hand out in place of privileged kernel ports, create a task namespace, and a task that the Subhurd can frob instead of the real kernel task. (do_mach_notify_dead_name): Handle dying tasks. (S_vm_set_default_memory_manager): New function. (S_host_reboot): Likewise. (S_host_processor_set_priv): Likewise. (S_register_new_task_notification): Likewise. (task_ihash_cleanup): Likewise. (task_ihash): New variable. (task_died): New function. (S_mach_notify_new_task): Likewise. (S_processor_set_tasks): Likewise. * boot/mig-decls.h: New file. * boot/mig-mutate.h: Likewise.
Diffstat (limited to 'boot/Makefile')
-rw-r--r--boot/Makefile10
1 files changed, 5 insertions, 5 deletions
diff --git a/boot/Makefile b/boot/Makefile
index 38a8c695..ac400441 100644
--- a/boot/Makefile
+++ b/boot/Makefile
@@ -23,12 +23,12 @@ SRCS = mach-crt0.c boot.c ux.c sigvec.S syscall.S \
COMMON-OBJS = notifyServer.o deviceServer.o \
ioServer.o io_replyUser.o device_replyUser.o \
termServer.o boot_script.o userland-boot.o
-OBJS = boot.o $(COMMON-OBJS)
+MIGSTUBS = machServer.o mach_hostServer.o gnumachServer.o task_notifyServer.o
+OBJS = boot.o $(COMMON-OBJS) $(MIGSTUBS)
target = boot
-io-MIGSFLAGS=-DREPLY_PORTS
-HURDLIBS = store shouldbeinlibc
+MIGSFLAGS=-imacros $(srcdir)/mig-mutate.h -DHURD_DEFAULT_PAYLOAD_TO_PORT=1
+io-MIGSFLAGS=-DREPLY_PORTS -DHURD_DEFAULT_PAYLOAD_TO_PORT=1
+HURDLIBS = store shouldbeinlibc ihash
LDLIBS += -lpthread
include ../Makeconf
-
-MIGSFLAGS = -DHURD_DEFAULT_PAYLOAD_TO_PORT=1