diff options
Diffstat (limited to 'debian/patches/startup0002-startup-implement-bits-of-the-fs-and-io-protocols.patch')
-rw-r--r-- | debian/patches/startup0002-startup-implement-bits-of-the-fs-and-io-protocols.patch | 143 |
1 files changed, 0 insertions, 143 deletions
diff --git a/debian/patches/startup0002-startup-implement-bits-of-the-fs-and-io-protocols.patch b/debian/patches/startup0002-startup-implement-bits-of-the-fs-and-io-protocols.patch deleted file mode 100644 index 44a93d2d..00000000 --- a/debian/patches/startup0002-startup-implement-bits-of-the-fs-and-io-protocols.patch +++ /dev/null @@ -1,143 +0,0 @@ -From 68f7f0c06adfc6b93933073040d7d3380dedd336 Mon Sep 17 00:00:00 2001 -From: Justus Winter <justus@gnupg.org> -Date: Sat, 23 Apr 2016 17:52:33 +0200 -Subject: [PATCH hurd 2/2] startup: implement bits of the fs and io protocols - -* startup/Makefile: Build fs and io server with default -implementations. -(mung_msg_S.h): Tune regexp only to match the include guard. -* startup/startup.c (demuxer): Add new protocols. Nicer implementation. -(S_file_check_access): New function. -(S_io_restrict_auth): Likewise. ---- - startup/Makefile | 6 +++-- - startup/startup.c | 72 ++++++++++++++++++++++++++++++++++++++++++++++++------- - 2 files changed, 67 insertions(+), 11 deletions(-) - -diff --git a/startup/Makefile b/startup/Makefile -index ee2ecdd5..db062ad 100644 ---- a/startup/Makefile -+++ b/startup/Makefile -@@ -21,15 +21,17 @@ makemode := server - SRCS = startup.c - OBJS = $(SRCS:.c=.o) \ - startupServer.o notifyServer.o startup_replyUser.o msgServer.o \ -- startup_notifyUser.o fsysServer.o -+ startup_notifyUser.o fsysServer.o fsServer.o ioServer.o - target = startup - HURDLIBS = shouldbeinlibc - - # startup does not use libports. Disable the default payload to port - # conversion. - MIGSFLAGS="-DHURD_DEFAULT_PAYLOAD_TO_PORT=1" -+fsServer-CFLAGS="-DMIG_EOPNOTSUPP=EOPNOTSUPP" -+ioServer-CFLAGS="-DMIG_EOPNOTSUPP=EOPNOTSUPP" - - include ../Makeconf - - mung_msg_S.h: msg_S.h -- sed 's/msg_server/mung_msg_server/' < $< > $@ -+ sed 's/_msg_server/_mung_msg_server/' < $< > $@ -diff --git a/startup/startup.c b/startup/startup.c -index 9c45f4b..d7544f2 100644 ---- a/startup/startup.c -+++ b/startup/startup.c -@@ -51,12 +51,16 @@ - #include <version.h> - #include <argp.h> - #include <pids.h> -+#include <idvec.h> - - #include "startup_notify_U.h" - #include "startup_reply_U.h" - #include "startup_S.h" - #include "notify_S.h" - #include "mung_msg_S.h" -+#include "fsys_S.h" -+#include "fs_S.h" -+#include "io_S.h" - - /* host_reboot flags for when we crash. */ - static int crash_flags = RB_AUTOBOOT; -@@ -502,15 +506,19 @@ static int - demuxer (mach_msg_header_t *inp, - mach_msg_header_t *outp) - { -- extern int notify_server (mach_msg_header_t *, mach_msg_header_t *); -- extern int startup_server (mach_msg_header_t *, mach_msg_header_t *); -- extern int msg_server (mach_msg_header_t *, mach_msg_header_t *); -- extern int fsys_server (mach_msg_header_t *, mach_msg_header_t *); -- -- return (notify_server (inp, outp) || -- msg_server (inp, outp) || -- fsys_server (inp, outp) || -- startup_server (inp, outp)); -+ mig_routine_t routine; -+ if ((routine = notify_server_routine (inp)) || -+ (routine = msg_server_routine (inp)) || -+ (routine = fsys_server_routine (inp)) || -+ (routine = fs_server_routine (inp)) || -+ (routine = io_server_routine (inp)) || -+ (routine = startup_server_routine (inp))) -+ { -+ (*routine) (inp, outp); -+ return TRUE; -+ } -+ else -+ return FALSE; - } - - error_t -@@ -1703,3 +1711,49 @@ S_fsys_forward (mach_port_t server, mach_port_t requestor, - { - return EOPNOTSUPP; - } -+ -+error_t -+S_file_check_access (mach_port_t server, -+ int *allowed) -+{ -+ if (server != startup) -+ return EOPNOTSUPP; -+ *allowed = 0; -+ return 0; -+} -+ -+error_t -+S_io_stat (mach_port_t server, -+ struct stat *st) -+{ -+ if (server != startup) -+ return EOPNOTSUPP; -+ -+ memset (st, 0, sizeof *st); -+ -+ st->st_fstype = FSTYPE_MISC; -+ st->st_fsid = getpid(); -+ st->st_mode = S_IFCHR | S_IROOT; -+ -+ return 0; -+} -+ -+error_t -+S_io_restrict_auth (mach_port_t server, -+ mach_port_t *newport, -+ mach_msg_type_name_t *newporttype, -+ uid_t *uids, size_t nuids, -+ uid_t *gids, size_t ngids) -+{ -+ struct idvec user = { uids, (unsigned) nuids, (unsigned) nuids }; -+ -+ if (server != startup) -+ return EOPNOTSUPP; -+ -+ if (! idvec_contains (&user, 0)) -+ return EPERM; -+ -+ *newport = server; -+ *newporttype = MACH_MSG_TYPE_COPY_SEND; -+ return 0; -+} --- -2.1.4 - |