diff --git a/net-im/telepathy-salut/Makefile b/net-im/telepathy-salut/Makefile index 4ff1a8790252..14bff8114439 100644 --- a/net-im/telepathy-salut/Makefile +++ b/net-im/telepathy-salut/Makefile @@ -7,8 +7,7 @@ # PORTNAME= telepathy-salut -PORTVERSION= 0.3.9 -PORTREVISION= 1 +PORTVERSION= 0.3.10 CATEGORIES= net-im MASTER_SITES= http://telepathy.freedesktop.org/releases/${PORTNAME}/ diff --git a/net-im/telepathy-salut/distinfo b/net-im/telepathy-salut/distinfo index 807ae7acb520..964c039a5bb7 100644 --- a/net-im/telepathy-salut/distinfo +++ b/net-im/telepathy-salut/distinfo @@ -1,3 +1,3 @@ -MD5 (telepathy-salut-0.3.9.tar.gz) = b61b6f8a86b07a10315c4cca9d78b4fa -SHA256 (telepathy-salut-0.3.9.tar.gz) = 16d829e6351016fbbf49074d1b18e914d484b9a0f0fd4a13d460575d3fea2dbf -SIZE (telepathy-salut-0.3.9.tar.gz) = 1172347 +MD5 (telepathy-salut-0.3.10.tar.gz) = 145580837ba7727f7c97bcfbd1b4a71f +SHA256 (telepathy-salut-0.3.10.tar.gz) = 4cfc81c26a45202e02ff50a275d606c835a10787e621b38f8b13b14bfafc2d0b +SIZE (telepathy-salut-0.3.10.tar.gz) = 1190762 diff --git a/net-im/telepathy-salut/files/patch-lib_gibber_gibber-unix-transport.c b/net-im/telepathy-salut/files/patch-lib_gibber_gibber-unix-transport.c new file mode 100644 index 000000000000..b65bb8bcd69b --- /dev/null +++ b/net-im/telepathy-salut/files/patch-lib_gibber_gibber-unix-transport.c @@ -0,0 +1,117 @@ +--- lib/gibber/gibber-unix-transport.c.orig 2009-09-12 13:43:06.000000000 -0400 ++++ lib/gibber/gibber-unix-transport.c 2009-09-12 13:55:49.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))]; ++ } buffer; + + DEBUG ("send credentials"); + fd = GIBBER_FD_TRANSPORT (transport)->fd; +@@ -217,19 +218,14 @@ 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); ++ msg.msg_control = (caddr_t) &buffer; ++ msg.msg_controllen = CMSG_SPACE (sizeof (struct cmsgcred)); + + /* 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 (); ++ memset (&buffer, 0, sizeof (buffer)); ++ buffer.hdr.cmsg_len = CMSG_LEN (sizeof (struct cmsgcred)); ++ buffer.hdr.cmsg_level = SOL_SOCKET; ++ buffer.hdr.cmsg_type = SCM_CREDS; + + ret = sendmsg (fd, &msg, 0); + if (ret == -1) +@@ -256,10 +252,10 @@ 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; +- int opt; ++ union { ++ struct cmsghdr hdr; ++ char cred[CMSG_SPACE (sizeof (struct cmsgcred))]; ++ } control; + + if (priv->recv_creds_cb == NULL) + return gibber_fd_transport_read (transport, channel, error); +@@ -267,10 +263,6 @@ gibber_unix_transport_read (GibberFdTran + /* We are waiting for credentials */ + fd = transport->fd; + +- /* set SO_PASSCRED flag */ +- opt = 1; +- setsockopt (fd, SOL_SOCKET, SO_PASSCRED, &opt, sizeof (opt)); +- + memset (buffer, 0, sizeof (buffer)); + memset (&iov, 0, sizeof (iov)); + iov.iov_base = buffer; +@@ -279,8 +271,9 @@ 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); ++ memset (&control, 0, sizeof (control)); ++ msg.msg_control = (caddr_t) &control; ++ msg.msg_controllen = CMSG_SPACE (sizeof (struct cmsgcred)); + + bytes_read = recvmsg (fd, &msg, 0); + +@@ -299,16 +292,11 @@ gibber_unix_transport_read (GibberFdTran + return GIBBER_FD_IO_RESULT_ERROR; + } + +- /* unset SO_PASSCRED flag */ +- opt = 0; +- setsockopt (fd, SOL_SOCKET, SO_PASSCRED, &opt, sizeof (opt)); +- + buf.data = buffer; + buf.length = bytes_read; + + /* extract the credentials */ +- ch = CMSG_FIRSTHDR (&msg); +- if (ch == NULL) ++ if (control.hdr.cmsg_len < CMSG_LEN (sizeof (struct cmsgcred)) || control.hdr.cmsg_type != SCM_CREDS) + { + GError *err = NULL; + +@@ -324,11 +312,12 @@ gibber_unix_transport_read (GibberFdTran + else + { + GibberCredentials credentials; ++ struct cmsgcred *cred; + +- cred = (struct ucred *) CMSG_DATA (ch); +- credentials.pid = cred->pid; +- credentials.uid = cred->uid; +- credentials.gid = cred->gid; ++ cred = (struct cmsgcred *) CMSG_DATA (&control); ++ 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); diff --git a/net-im/telepathy-salut/files/patch-lib_gibber_gibber-util.c b/net-im/telepathy-salut/files/patch-lib_gibber_gibber-util.c deleted file mode 100644 index be92164c0c2d..000000000000 --- a/net-im/telepathy-salut/files/patch-lib_gibber_gibber-util.c +++ /dev/null @@ -1,11 +0,0 @@ ---- lib/gibber/gibber-util.c.orig 2008-01-17 00:59:24.000000000 -0500 -+++ lib/gibber/gibber-util.c 2008-01-17 00:59:48.000000000 -0500 -@@ -18,6 +18,8 @@ - */ - - -+#include -+#include - #include - #include - #include diff --git a/net-im/telepathy-salut/files/patch-lib_gibber_gibber-util.h b/net-im/telepathy-salut/files/patch-lib_gibber_gibber-util.h deleted file mode 100644 index d6eb90222549..000000000000 --- a/net-im/telepathy-salut/files/patch-lib_gibber_gibber-util.h +++ /dev/null @@ -1,10 +0,0 @@ ---- lib/gibber/gibber-util.h.orig 2008-01-17 00:57:54.000000000 -0500 -+++ lib/gibber/gibber-util.h 2008-01-17 00:58:06.000000000 -0500 -@@ -21,6 +21,7 @@ - #define __GIBBER_UTIL_H__ - - #include -+#include - - #include -