summaryrefslogtreecommitdiff
path: root/security/gnome-keyring/files/patch-gnome-keyring.c
diff options
context:
space:
mode:
authorJoe Marcus Clarke <marcus@FreeBSD.org>2004-12-18 00:27:02 +0000
committerJoe Marcus Clarke <marcus@FreeBSD.org>2004-12-18 00:27:02 +0000
commit502885d8afae12b0aaef82e8a094c98ec4a9ddca (patch)
treec2a69a197f4076a372cea7f3109285a46a5e80f1 /security/gnome-keyring/files/patch-gnome-keyring.c
parentThis file should never have been here. (diff)
Fix some alignment errors with socket authentication which fixes
gnome-keyring on non-i386 platforms. Submitted by: Sean McNeil <sean@mcneil.com>
Diffstat (limited to '')
-rw-r--r--security/gnome-keyring/files/patch-gnome-keyring.c48
1 files changed, 26 insertions, 22 deletions
diff --git a/security/gnome-keyring/files/patch-gnome-keyring.c b/security/gnome-keyring/files/patch-gnome-keyring.c
index c1abd3a28283..ebac2c91d812 100644
--- a/security/gnome-keyring/files/patch-gnome-keyring.c
+++ b/security/gnome-keyring/files/patch-gnome-keyring.c
@@ -1,20 +1,22 @@
---- gnome-keyring.c.orig Mon Jan 12 04:37:31 2004
-+++ gnome-keyring.c Tue May 11 20:59:40 2004
-@@ -35,6 +35,7 @@
- #include <stdio.h>
+--- gnome-keyring.c.orig Tue Sep 7 00:05:37 2004
++++ gnome-keyring.c Fri Dec 17 10:06:11 2004
+@@ -36,6 +36,7 @@
+ #include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
+#include <sys/uio.h>
#include <sys/un.h>
#include <stdarg.h>
-@@ -248,11 +249,37 @@
+@@ -253,11 +254,39 @@
{
char buf;
int bytes_written;
+#if defined(HAVE_CMSGCRED) && !defined(LOCAL_CREDS)
-+ char cmsgmem[CMSG_SPACE (sizeof (struct cmsgcred))];
-+ struct cmsghdr *cmsg = (struct cmsghdr *) cmsgmem;
++ struct {
++ struct cmsghdr hdr;
++ struct cmsgcred cred;
++ } cmsg;
+ struct iovec iov;
+ struct msghdr msg;
+#endif
@@ -28,12 +30,12 @@
+ msg.msg_iov = &iov;
+ msg.msg_iovlen = 1;
+
-+ msg.msg_control = cmsg;
-+ msg.msg_controllen = sizeof (cmsgmem);
-+ memset (cmsg, 0, sizeof (cmsgmem));
-+ cmsg->cmsg_len = sizeof (cmsgmem);
-+ cmsg->cmsg_level = SOL_SOCKET;
-+ cmsg->cmsg_type = SCM_CREDS;
++ msg.msg_control = &cmsg;
++ msg.msg_controllen = sizeof (cmsg);
++ memset (&cmsg, 0, sizeof (cmsg));
++ cmsg.hdr.cmsg_len = sizeof (cmsg);
++ cmsg.hdr.cmsg_level = SOL_SOCKET;
++ cmsg.hdr.cmsg_type = SCM_CREDS;
+#endif
again:
@@ -47,13 +49,15 @@
if (bytes_written < 0 && errno == EINTR)
goto again;
-@@ -270,11 +297,37 @@
+@@ -275,11 +304,39 @@
{
char buf;
int bytes_written;
+#if defined(HAVE_CMSGCRED) && !defined(LOCAL_CREDS)
-+ char cmsgmem[CMSG_SPACE (sizeof (struct cmsgcred))];
-+ struct cmsghdr *cmsg = (struct cmsghdr *) cmsgmem;
++ struct {
++ struct cmsghdr hdr;
++ struct cmsgcred cred;
++ } cmsg;
+ struct iovec iov;
+ struct msghdr msg;
+#endif
@@ -67,12 +71,12 @@
+ msg.msg_iov = &iov;
+ msg.msg_iovlen = 1;
+
-+ msg.msg_control = cmsg;
-+ msg.msg_controllen = sizeof (cmsgmem);
-+ memset (cmsg, 0, sizeof (cmsgmem));
-+ cmsg->cmsg_len = sizeof (cmsgmem);
-+ cmsg->cmsg_level = SOL_SOCKET;
-+ cmsg->cmsg_type = SCM_CREDS;
++ msg.msg_control = &cmsg;
++ msg.msg_controllen = sizeof (cmsg);
++ memset (&cmsg, 0, sizeof (cmsg));
++ cmsg.hdr.cmsg_len = sizeof (cmsg);
++ cmsg.hdr.cmsg_level = SOL_SOCKET;
++ cmsg.hdr.cmsg_type = SCM_CREDS;
+#endif
again: