summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--debian/patches/fix-receiver-lookups.patch263
-rw-r--r--debian/patches/series1
2 files changed, 264 insertions, 0 deletions
diff --git a/debian/patches/fix-receiver-lookups.patch b/debian/patches/fix-receiver-lookups.patch
new file mode 100644
index 00000000..1f1e6a9e
--- /dev/null
+++ b/debian/patches/fix-receiver-lookups.patch
@@ -0,0 +1,263 @@
+diff --git a/auth/Makefile b/auth/Makefile
+index 75910c7..b9eedda 100644
+--- a/auth/Makefile
++++ b/auth/Makefile
+@@ -25,6 +25,6 @@ target = auth
+ HURDLIBS = ports ihash shouldbeinlibc
+ OTHERLIBS = -lpthread
+
+-MIGSFLAGS = -imacros $(srcdir)/authmutations.h
++MIGSFLAGS = -imacros $(srcdir)/mig-mutate.h
+
+ include ../Makeconf
+diff --git a/auth/auth.c b/auth/auth.c
+index e69c4f8..7d35bd3 100644
+--- a/auth/auth.c
++++ b/auth/auth.c
+@@ -35,6 +35,8 @@
+ #include "auth_S.h"
+ #include "auth_reply_U.h"
+
++#include "auth.h"
++
+ const char *argp_program_version = STANDARD_HURD_VERSION(auth);
+
+
+@@ -72,14 +74,6 @@ destroy_authhandle (void *p)
+ idvec_free_contents (&h->auids);
+ idvec_free_contents (&h->agids);
+ }
+-
+-/* Called by server stub functions. */
+-
+-authhandle_t
+-auth_port_to_handle (auth_t auth)
+-{
+- return ports_lookup_port (auth_bucket, auth, authhandle_portclass);
+-}
+
+ /* id management. */
+
+diff --git a/auth/auth.h b/auth/auth.h
+new file mode 100644
+index 0000000..0bc341d
+--- /dev/null
++++ b/auth/auth.h
+@@ -0,0 +1,28 @@
++/*
++ Copyright (C) 2014 Free Software Foundation, Inc.
++ Written by Justus Winter.
++
++ This file is part of the GNU Hurd.
++
++ The GNU Hurd is free software; you can redistribute it and/or
++ modify it under the terms of the GNU General Public License as
++ published by the Free Software Foundation; either version 2, or (at
++ your option) any later version.
++
++ The GNU Hurd is distributed in the hope that it will be useful, but
++ WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ General Public License for more details.
++
++ You should have received a copy of the GNU General Public License
++ along with the GNU Hurd. If not, see <http://www.gnu.org/licenses/>. */
++
++#ifndef __AUTH_H__
++#define __AUTH_H__
++
++#include <hurd/ports.h>
++
++extern struct port_bucket *auth_bucket;
++extern struct port_class *authhandle_portclass;
++
++#endif /* __AUTH_H__ */
+diff --git a/auth/auth_mig.h b/auth/auth_mig.h
+deleted file mode 100644
+index d919c1b..0000000
+--- a/auth/auth_mig.h
++++ /dev/null
+@@ -1,5 +0,0 @@
+-typedef struct authhandle *authhandle_t;
+-
+-authhandle_t auth_port_to_handle (auth_t);
+-
+-#include <hurd/ports.h>
+diff --git a/auth/authmutations.h b/auth/authmutations.h
+deleted file mode 100644
+index 63b2f54..0000000
+--- a/auth/authmutations.h
++++ /dev/null
+@@ -1,6 +0,0 @@
+-/* CPP definitions for MiG processing of auth.defs for auth server. */
+-
+-#define AUTH_INTRAN authhandle_t auth_port_to_handle (auth_t)
+-#define AUTH_DESTRUCTOR ports_port_deref (authhandle_t)
+-
+-#define AUTH_IMPORTS import "auth_mig.h";
+diff --git a/auth/mig-decls.h b/auth/mig-decls.h
+new file mode 100644
+index 0000000..09c7c70
+--- /dev/null
++++ b/auth/mig-decls.h
+@@ -0,0 +1,42 @@
++/*
++ Copyright (C) 2014 Free Software Foundation, Inc.
++ Written by Justus Winter.
++
++ This file is part of the GNU Hurd.
++
++ The GNU Hurd is free software; you can redistribute it and/or
++ modify it under the terms of the GNU General Public License as
++ published by the Free Software Foundation; either version 2, or (at
++ your option) any later version.
++
++ The GNU Hurd is distributed in the hope that it will be useful, but
++ WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ General Public License for more details.
++
++ You should have received a copy of the GNU General Public License
++ along with the GNU Hurd. If not, see <http://www.gnu.org/licenses/>. */
++
++#ifndef __AUTH_MIG_DECLS_H__
++#define __AUTH_MIG_DECLS_H__
++
++#include "auth.h"
++
++typedef struct authhandle *authhandle_t;
++
++/* Called by server stub functions. */
++
++static inline struct authhandle * __attribute__ ((unused))
++auth_port_to_handle (mach_port_t auth)
++{
++ return ports_lookup_port (auth_bucket, auth, authhandle_portclass);
++}
++
++static inline void __attribute__ ((unused))
++end_using_authhandle (struct authhandle *auth)
++{
++ if (auth)
++ ports_port_deref (auth);
++}
++
++#endif /* __AUTH_MIG_DECLS_H__ */
+diff --git a/auth/mig-mutate.h b/auth/mig-mutate.h
+new file mode 100644
+index 0000000..ea40c70
+--- /dev/null
++++ b/auth/mig-mutate.h
+@@ -0,0 +1,24 @@
++/*
++ Copyright (C) 1991,93,94,2014 Free Software Foundation, Inc.
++ Written by Michael I. Bushnell.
++
++ This file is part of the GNU Hurd.
++
++ The GNU Hurd is free software; you can redistribute it and/or
++ modify it under the terms of the GNU General Public License as
++ published by the Free Software Foundation; either version 2, or (at
++ your option) any later version.
++
++ The GNU Hurd is distributed in the hope that it will be useful, but
++ WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ General Public License for more details.
++
++ You should have received a copy of the GNU General Public License
++ along with the GNU Hurd. If not, see <http://www.gnu.org/licenses/>. */
++
++/* CPP definitions for MiG processing of auth.defs for auth server. */
++
++#define AUTH_INTRAN authhandle_t auth_port_to_handle (auth_t)
++#define AUTH_DESTRUCTOR end_using_authhandle (authhandle_t)
++#define AUTH_IMPORTS import "mig-decls.h";
+diff --git a/trans/Makefile b/trans/Makefile
+index e74a869..a294282 100644
+--- a/trans/Makefile
++++ b/trans/Makefile
+@@ -37,6 +37,11 @@ password-MIGSFLAGS=\
+ "-DIO_DESTRUCTOR=trivfs_end_using_protid (trivfs_protid_t)" \
+ "-DPASSWORD_IMPORTS=import \"../libtrivfs/mig-decls.h\";"
+
++ifsock-MIGSFLAGS=\
++ "-DFILE_INTRAN=trivfs_protid_t trivfs_begin_using_protid (io_t)" \
++ "-DFILE_DESTRUCTOR=trivfs_end_using_protid (trivfs_protid_t)" \
++ "-DIFSOCK_IMPORTS=import \"../libtrivfs/mig-decls.h\";"
++
+ include ../Makeconf
+
+ vpath elfcore.c $(top_srcdir)/exec
+diff --git a/trans/ifsock.c b/trans/ifsock.c
+index 092bb40..4ed6589 100644
+--- a/trans/ifsock.c
++++ b/trans/ifsock.c
+@@ -131,15 +131,15 @@ trivfs_goaway (struct trivfs_control *fsys, int flags)
+ }
+
+ error_t
+-S_ifsock_getsockaddr (file_t sockfile,
++S_ifsock_getsockaddr (struct trivfs_protid *cred,
+ mach_port_t *address)
+ {
+- struct trivfs_protid *cred = ports_lookup_port (port_bucket, sockfile,
+- node_class);
+ int perms;
+ error_t err;
+
+- if (!cred)
++ if (!cred
++ || cred->pi.bucket != port_bucket
++ || cred->pi.class != node_class)
+ return EOPNOTSUPP;
+
+ err = file_check_access (cred->realnode, &perms);
+@@ -148,6 +148,5 @@ S_ifsock_getsockaddr (file_t sockfile,
+
+ if (!err)
+ *address = address_port;
+- ports_port_deref (cred);
+ return err;
+ }
+diff --git a/utils/Makefile b/utils/Makefile
+index 5ebb231..81fa293 100644
+--- a/utils/Makefile
++++ b/utils/Makefile
+@@ -73,7 +73,7 @@ rpctrace-CPPFLAGS = -DDATADIR=\"${datadir}\"
+ fakeauth: authServer.o auth_requestUser.o interruptServer.o \
+ ../libports/libports.a ../libihash/libihash.a \
+ ../libshouldbeinlibc/libshouldbeinlibc.a
+-auth-MIGSFLAGS = -imacros $(srcdir)/../auth/authmutations.h
++auth-MIGSFLAGS = -imacros $(srcdir)/../auth/mig-mutate.h
+ fakeauth-CPPFLAGS = -I$(srcdir)/../auth
+ authServer-CPPFLAGS = -I$(srcdir)/../auth
+ auth_requestUser-CPPFLAGS = -I$(srcdir)/../auth
+diff --git a/utils/fakeauth.c b/utils/fakeauth.c
+index 660295f..590a421 100644
+--- a/utils/fakeauth.c
++++ b/utils/fakeauth.c
+@@ -30,6 +30,8 @@
+ #include "auth_request_U.h"
+ #include "interrupt_S.h"
+
++#include "../auth/auth.h"
++
+ /* Auth handles are server ports with sets of ids. */
+ struct authhandle
+ {
+@@ -63,14 +65,6 @@ destroy_authhandle (void *p)
+ idvec_free_contents (&h->auids);
+ idvec_free_contents (&h->agids);
+ }
+-
+-/* Called by server stub functions. */
+-
+-authhandle_t
+-auth_port_to_handle (auth_t auth)
+-{
+- return ports_lookup_port (auth_bucket, auth, authhandle_portclass);
+-}
+
+ /* id management. */
+
diff --git a/debian/patches/series b/debian/patches/series
index c755083d..05c610af 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -46,3 +46,4 @@ xkb-compat.patch
xxx-fix-build.patch
+fix-receiver-lookups.patch