summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Schlemmer <azarah@gentoo.org>2005-07-08 13:16:40 +0000
committerMartin Schlemmer <azarah@gentoo.org>2005-07-08 13:16:40 +0000
commit112eef85b73b01a6688ee41731ecb3ebb8a03740 (patch)
treeb064f8ac6c67dfc5e55b0f4ce765bf87f6837225 /sys-apps/shadow/files
parentRe-rolled catalyst tarball and fixing digest. (diff)
downloadgentoo-2-112eef85b73b01a6688ee41731ecb3ebb8a03740.tar.gz
gentoo-2-112eef85b73b01a6688ee41731ecb3ebb8a03740.tar.bz2
gentoo-2-112eef85b73b01a6688ee41731ecb3ebb8a03740.zip
Fix EPIPE when nscd is used, bug #80413.
(Portage version: 2.0.51.22-r1)
Diffstat (limited to 'sys-apps/shadow/files')
-rw-r--r--sys-apps/shadow/files/digest-shadow-4.0.7-r31
-rw-r--r--sys-apps/shadow/files/shadow-4.0.7-nscd-EPIPE-failure.patch36
-rw-r--r--sys-apps/shadow/files/shadow-4.0.7-nscd-socket-path.patch31
3 files changed, 68 insertions, 0 deletions
diff --git a/sys-apps/shadow/files/digest-shadow-4.0.7-r3 b/sys-apps/shadow/files/digest-shadow-4.0.7-r3
new file mode 100644
index 000000000000..57cfe54be85e
--- /dev/null
+++ b/sys-apps/shadow/files/digest-shadow-4.0.7-r3
@@ -0,0 +1 @@
+MD5 89ebec0d1c0d861a5bd5c4c63e5cb0cc shadow-4.0.7.tar.bz2 1019749
diff --git a/sys-apps/shadow/files/shadow-4.0.7-nscd-EPIPE-failure.patch b/sys-apps/shadow/files/shadow-4.0.7-nscd-EPIPE-failure.patch
new file mode 100644
index 000000000000..7a4238b4ca37
--- /dev/null
+++ b/sys-apps/shadow/files/shadow-4.0.7-nscd-EPIPE-failure.patch
@@ -0,0 +1,36 @@
+Fix EPIPE failure when writing to nscd, bug #80413
+
+--- shadow-4.0.7/lib/nscd.c 2005-07-08 14:59:49.000000000 +0200
++++ shadow-4.0.7.az/lib/nscd.c 2005-07-08 14:59:22.000000000 +0200
+@@ -71,6 +71,7 @@
+ {
+ int sock = nscd_open_socket ();
+ request_header req;
++ struct iovec iov[2];
+ ssize_t nbytes;
+
+ if (sock == -1)
+@@ -78,15 +79,15 @@
+
+ req.version = NSCD_VERSION;
+ req.type = INVALIDATE;
+- req.key_len = strlen (service) + 1;
+- nbytes = write (sock, &req, sizeof (request_header));
+- if (nbytes != sizeof (request_header)) {
+- close (sock);
+- return -1;
+- }
++ req.key_len = strlen(service);
++
++ iov[0].iov_base = &req;
++ iov[0].iov_len = sizeof (req);
++ iov[1].iov_base = service;
++ iov[1].iov_len = req.key_len;
+
+- nbytes = write (sock, (void *) service, req.key_len);
++ nbytes = writev(sock, iov, 2);
+
+ close (sock);
+- return (nbytes != req.key_len ? (-1) : 0);
++ return (nbytes != iov[0].iov_len + iov[1].iov_len ? (-1) : 0);
+ }
diff --git a/sys-apps/shadow/files/shadow-4.0.7-nscd-socket-path.patch b/sys-apps/shadow/files/shadow-4.0.7-nscd-socket-path.patch
new file mode 100644
index 000000000000..42236157f500
--- /dev/null
+++ b/sys-apps/shadow/files/shadow-4.0.7-nscd-socket-path.patch
@@ -0,0 +1,31 @@
+Newer glibc's have a different nscd socket location #74395
+(From Fedora/Redhat)
+
+--- shadow-4.0.7/lib/nscd.c 2003-05-12 02:12:06.000000000 -0400
++++ shadow-4.0.7.jj/lib/nscd.c 2005-05-21 04:44:08.000000000 -0400
+@@ -13,7 +13,8 @@
+ /* Version number of the daemon interface */
+ #define NSCD_VERSION 2
+ /* Path for the Unix domain socket. */
+-#define _PATH_NSCDSOCKET "/var/run/.nscd_socket"
++#define _PATH_NSCDSOCKET "/var/run/nscd/socket"
++#define _PATH_NSCDSOCKET_OLD "/var/run/.nscd_socket"
+
+ /* Available services. */
+ typedef enum {
+@@ -57,8 +58,13 @@ static int nscd_open_socket (void)
+ assert (sizeof (addr.sun_path) >= sizeof (_PATH_NSCDSOCKET));
+ strcpy (addr.sun_path, _PATH_NSCDSOCKET);
+ if (connect (sock, (struct sockaddr *) &addr, sizeof (addr)) < 0) {
+- close (sock);
+- return -1;
++ addr.sun_family = AF_UNIX;
++ assert (sizeof (addr.sun_path) >= sizeof (_PATH_NSCDSOCKET_OLD));
++ strcpy (addr.sun_path, _PATH_NSCDSOCKET_OLD);
++ if (connect (sock, (struct sockaddr *) &addr, sizeof (addr)) < 0) {
++ close (sock);
++ return -1;
++ }
+ }
+
+ return sock;