diff options
author | Joe Marcus Clarke <marcus@FreeBSD.org> | 2004-12-18 00:27:02 +0000 |
---|---|---|
committer | Joe Marcus Clarke <marcus@FreeBSD.org> | 2004-12-18 00:27:02 +0000 |
commit | 502885d8afae12b0aaef82e8a094c98ec4a9ddca (patch) | |
tree | c2a69a197f4076a372cea7f3109285a46a5e80f1 /security/gnome-keyring/files/patch-gnome-keyring.c | |
parent | This 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.c | 48 |
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: |