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/gnomekeyring/files/patch-gnome-keyring-daemon-io.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/gnomekeyring/files/patch-gnome-keyring-daemon-io.c | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/security/gnomekeyring/files/patch-gnome-keyring-daemon-io.c b/security/gnomekeyring/files/patch-gnome-keyring-daemon-io.c new file mode 100644 index 000000000000..9a283741317c --- /dev/null +++ b/security/gnomekeyring/files/patch-gnome-keyring-daemon-io.c @@ -0,0 +1,53 @@ +--- gnome-keyring-daemon-io.c.orig Tue Jan 13 05:29:02 2004 ++++ gnome-keyring-daemon-io.c Fri Dec 17 00:44:55 2004 +@@ -100,8 +100,10 @@ + char buf; + + #ifdef HAVE_CMSGCRED +- char cmsgmem[CMSG_SPACE (sizeof (struct cmsgcred))]; +- struct cmsghdr *cmsg = (struct cmsghdr *) cmsgmem; ++ struct { ++ struct cmsghdr hdr; ++ struct cmsgcred cred; ++ } cmsg; + #endif + + *pid = 0; +@@ -126,9 +128,9 @@ + msg.msg_iovlen = 1; + + #ifdef HAVE_CMSGCRED +- memset (cmsgmem, 0, sizeof (cmsgmem)); +- msg.msg_control = cmsgmem; +- msg.msg_controllen = sizeof (cmsgmem); ++ memset (&cmsg, 0, sizeof (cmsg)); ++ msg.msg_control = &cmsg; ++ msg.msg_controllen = sizeof (cmsg); + #endif + + again: +@@ -147,7 +149,8 @@ + } + + #ifdef HAVE_CMSGCRED +- if (cmsg->cmsg_len < sizeof (cmsgmem) || cmsg->cmsg_type != SCM_CREDS) { ++ if (cmsg.hdr.cmsg_len < sizeof (cmsg) || ++ cmsg.hdr.cmsg_type != SCM_CREDS) { + g_warning ("Message from recvmsg() was not SCM_CREDS\n"); + return FALSE; + } +@@ -168,12 +171,8 @@ + return FALSE; + } + #elif defined(HAVE_CMSGCRED) +- struct cmsgcred *cred; +- +- cred = (struct cmsgcred *) CMSG_DATA (cmsg); +- +- *pid = cred->cmcred_pid; +- *uid = cred->cmcred_euid; ++ *pid = cmsg.cred.cmcred_pid; ++ *uid = cmsg.cred.cmcred_euid; + #else /* !SO_PEERCRED && !HAVE_CMSGCRED */ + g_warning ("Socket credentials not supported on this OS\n"); + return FALSE; |