summaryrefslogtreecommitdiff
path: root/debian/patches/startup0002-startup-implement-bits-of-the-fs-and-io-protocols.patch
diff options
context:
space:
mode:
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.patch182
1 files changed, 0 insertions, 182 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 f37cbe94..00000000
--- a/debian/patches/startup0002-startup-implement-bits-of-the-fs-and-io-protocols.patch
+++ /dev/null
@@ -1,182 +0,0 @@
-From 3fee5da37d2caa231f75bc89543f2d2278ab873b 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/4] 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 (mig_reply_setup): New function.
-(demuxer): Add new protocols. Nicer implementation.
-(S_file_check_access): New function.
-(S_io_restrict_auth): Likewise.
----
- startup/Makefile | 6 ++--
- startup/startup.c | 106 +++++++++++++++++++++++++++++++++++++++++++++++++-----
- 2 files changed, 101 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..97a1bab 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;
-@@ -498,19 +502,57 @@ run_for_real (char *filename, char *args, int arglen, mach_port_t ctty,
-
- /** Main program and setup **/
-
-+/* XXX: The libc should provide this function. */
-+static void
-+mig_reply_setup (
-+ const mach_msg_header_t *in,
-+ mach_msg_header_t *out)
-+{
-+ static const mach_msg_type_t RetCodeType = {
-+ /* msgt_name = */ MACH_MSG_TYPE_INTEGER_32,
-+ /* msgt_size = */ 32,
-+ /* msgt_number = */ 1,
-+ /* msgt_inline = */ TRUE,
-+ /* msgt_longform = */ FALSE,
-+ /* msgt_deallocate = */ FALSE,
-+ /* msgt_unused = */ 0
-+ };
-+
-+#define InP (in)
-+#define OutP ((mig_reply_header_t *) out)
-+ OutP->Head.msgh_bits =
-+ MACH_MSGH_BITS(MACH_MSGH_BITS_REMOTE(InP->msgh_bits), 0);
-+ OutP->Head.msgh_size = sizeof *OutP;
-+ OutP->Head.msgh_remote_port = InP->msgh_remote_port;
-+ OutP->Head.msgh_local_port = MACH_PORT_NULL;
-+ OutP->Head.msgh_seqno = 0;
-+ OutP->Head.msgh_id = InP->msgh_id + 100;
-+ OutP->RetCodeType = RetCodeType;
-+ OutP->RetCode = MIG_BAD_ID;
-+#undef InP
-+#undef OutP
-+}
-+
- 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;
-+
-+ mig_reply_setup (inp, outp);
-+
-+ 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 +1745,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
-