aboutsummaryrefslogtreecommitdiff
path: root/net-im/telepathy-gabble
diff options
context:
space:
mode:
authorJoe Marcus Clarke <marcus@FreeBSD.org>2009-06-03 04:30:26 +0000
committerJoe Marcus Clarke <marcus@FreeBSD.org>2009-06-03 04:30:26 +0000
commitfdc1667c745045914fdeb7261c6cb5393d5cdc4e (patch)
tree0922ab66c1b6c73eb24c50945c59af3cb4432a24 /net-im/telepathy-gabble
parent4329b04644ac6271fd97d5a7b4adefdee3b5724e (diff)
downloadports-fdc1667c745045914fdeb7261c6cb5393d5cdc4e.tar.gz
ports-fdc1667c745045914fdeb7261c6cb5393d5cdc4e.zip
Notes
Diffstat (limited to 'net-im/telepathy-gabble')
-rw-r--r--net-im/telepathy-gabble/Makefile2
-rw-r--r--net-im/telepathy-gabble/distinfo6
-rw-r--r--net-im/telepathy-gabble/files/patch-lib_gibber_gibber-unix-transport.c116
3 files changed, 120 insertions, 4 deletions
diff --git a/net-im/telepathy-gabble/Makefile b/net-im/telepathy-gabble/Makefile
index 8acdad2ad44e..b5bfd7d80664 100644
--- a/net-im/telepathy-gabble/Makefile
+++ b/net-im/telepathy-gabble/Makefile
@@ -6,7 +6,7 @@
# $MCom: ports/net-im/telepathy-gabble/Makefile,v 1.5 2009/01/08 07:03:21 marcus Exp $
PORTNAME= telepathy-gabble
-PORTVERSION= 0.7.27
+PORTVERSION= 0.7.28
CATEGORIES= net-im
MASTER_SITES= http://telepathy.freedesktop.org/releases/${PORTNAME}/
diff --git a/net-im/telepathy-gabble/distinfo b/net-im/telepathy-gabble/distinfo
index 024da5cc9275..100d4380ed90 100644
--- a/net-im/telepathy-gabble/distinfo
+++ b/net-im/telepathy-gabble/distinfo
@@ -1,3 +1,3 @@
-MD5 (telepathy-gabble-0.7.27.tar.gz) = 0bd4fdfb63d86d5e297ae069ad489704
-SHA256 (telepathy-gabble-0.7.27.tar.gz) = 9a4ce52bd7eb9b8010a481be71117d814eb15fe9c8579817c7b486199a3801ac
-SIZE (telepathy-gabble-0.7.27.tar.gz) = 1780387
+MD5 (telepathy-gabble-0.7.28.tar.gz) = 617b9f161a08f5b9598647aa78d721e5
+SHA256 (telepathy-gabble-0.7.28.tar.gz) = 078281a3f89a16abd9a39ca63fa5035bef3a6380e851c1890b1c2a4ad6a85350
+SIZE (telepathy-gabble-0.7.28.tar.gz) = 1802403
diff --git a/net-im/telepathy-gabble/files/patch-lib_gibber_gibber-unix-transport.c b/net-im/telepathy-gabble/files/patch-lib_gibber_gibber-unix-transport.c
new file mode 100644
index 000000000000..79aaa44ec998
--- /dev/null
+++ b/net-im/telepathy-gabble/files/patch-lib_gibber_gibber-unix-transport.c
@@ -0,0 +1,116 @@
+--- lib/gibber/gibber-unix-transport.c.orig 2009-06-02 23:56:27.000000000 -0400
++++ lib/gibber/gibber-unix-transport.c 2009-06-03 00:13:18.000000000 -0400
+@@ -200,11 +200,12 @@ gibber_unix_transport_send_credentials (
+ gsize size)
+ {
+ int fd, ret;
+- struct ucred *cred;
+ struct msghdr msg;
+- struct cmsghdr *ch;
+ struct iovec iov;
+- char buffer[CMSG_SPACE (sizeof (struct ucred))];
++ union {
++ struct cmsghdr hdr;
++ char cred[CMSG_SPACE (sizeof (struct cmsgcred))];
++ } cmsg;
+
+ DEBUG ("send credentials");
+ fd = GIBBER_FD_TRANSPORT (transport)->fd;
+@@ -217,19 +218,12 @@ gibber_unix_transport_send_credentials (
+ memset (&msg, 0, sizeof msg);
+ msg.msg_iov = &iov;
+ msg.msg_iovlen = 1;
+- msg.msg_control = buffer;
+- msg.msg_controllen = sizeof (buffer);
+-
+- /* Set the credentials */
+- ch = CMSG_FIRSTHDR (&msg);
+- ch->cmsg_len = CMSG_LEN (sizeof (struct ucred));
+- ch->cmsg_level = SOL_SOCKET;
+- ch->cmsg_type = SCM_CREDENTIALS;
+-
+- cred = (struct ucred *) CMSG_DATA (ch);
+- cred->pid = getpid ();
+- cred->uid = getuid ();
+- cred->gid = getgid ();
++ msg.msg_control = (caddr_t) &cmsg;
++ msg.msg_controllen = CMSG_SPACE (sizeof (struct cmsgcred));
++ memset (&cmsg, 0, sizeof (cmsg));
++ cmsg.hdr.cmsg_len = CMSG_LEN (sizeof (struct cmsgcred));
++ cmsg.hdr.cmsg_level = SOL_SOCKET;
++ cmsg.hdr.cmsg_type = SCM_CREDS;
+
+ ret = sendmsg (fd, &msg, 0);
+ if (ret == -1)
+@@ -256,9 +250,11 @@ gibber_unix_transport_read (GibberFdTran
+ GibberBuffer buf;
+ struct iovec iov;
+ struct msghdr msg;
+- char control[CMSG_SPACE (sizeof (struct ucred))];
+- struct cmsghdr *ch;
+- struct ucred *cred;
++ struct cmsgcred *cred;
++ union {
++ struct cmsghdr hdr;
++ char cred[CMSG_SPACE (sizeof *cred)];
++ } cmsg;
+ int opt;
+
+ if (priv->recv_creds_cb == NULL)
+@@ -268,8 +264,10 @@ gibber_unix_transport_read (GibberFdTran
+ fd = transport->fd;
+
+ /* set SO_PASSCRED flag */
++#ifdef SO_PASSCRED
+ opt = 1;
+ setsockopt (fd, SOL_SOCKET, SO_PASSCRED, &opt, sizeof (opt));
++#endif
+
+ memset (buffer, 0, sizeof (buffer));
+ memset (&iov, 0, sizeof (iov));
+@@ -279,8 +277,8 @@ gibber_unix_transport_read (GibberFdTran
+ memset (&msg, 0, sizeof (msg));
+ msg.msg_iov = &iov;
+ msg.msg_iovlen = 1;
+- msg.msg_control = control;
+- msg.msg_controllen = sizeof (control);
++ msg.msg_control = (caddr_t) &cmsg;
++ msg.msg_controllen = CMSG_SPACE (sizeof *cred);
+
+ bytes_read = recvmsg (fd, &msg, 0);
+
+@@ -300,15 +298,17 @@ gibber_unix_transport_read (GibberFdTran
+ }
+
+ /* unset SO_PASSCRED flag */
++#ifdef SO_PASSCRED
+ opt = 0;
+ setsockopt (fd, SOL_SOCKET, SO_PASSCRED, &opt, sizeof (opt));
++#endif
+
+ buf.data = buffer;
+ buf.length = bytes_read;
+
+ /* extract the credentials */
+- ch = CMSG_FIRSTHDR (&msg);
+- if (ch == NULL)
++ if (cmsg.hdr.cmsg_len < CMSG_LEN (sizeof *cred) ||
++ cmsg.hdr.cmsg_type != SCM_CREDS)
+ {
+ GError *err = NULL;
+
+@@ -325,10 +325,10 @@ gibber_unix_transport_read (GibberFdTran
+ {
+ GibberCredentials credentials;
+
+- cred = (struct ucred *) CMSG_DATA (ch);
+- credentials.pid = cred->pid;
+- credentials.uid = cred->uid;
+- credentials.gid = cred->gid;
++ cred = (struct cmsgcred *) CMSG_DATA (&cmsg.hdr);
++ credentials.pid = cred->cmcred_pid;
++ credentials.uid = cred->cmcred_uid;
++ credentials.gid = cred->cmcred_gid;
+
+ priv->recv_creds_cb (self, &buf, &credentials, NULL,
+ priv->recv_creds_data);