diff options
author | Martin Schlemmer <azarah@gentoo.org> | 2005-07-08 13:16:40 +0000 |
---|---|---|
committer | Martin Schlemmer <azarah@gentoo.org> | 2005-07-08 13:16:40 +0000 |
commit | 112eef85b73b01a6688ee41731ecb3ebb8a03740 (patch) | |
tree | b064f8ac6c67dfc5e55b0f4ce765bf87f6837225 /sys-apps/shadow/files | |
parent | Re-rolled catalyst tarball and fixing digest. (diff) | |
download | gentoo-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-r3 | 1 | ||||
-rw-r--r-- | sys-apps/shadow/files/shadow-4.0.7-nscd-EPIPE-failure.patch | 36 | ||||
-rw-r--r-- | sys-apps/shadow/files/shadow-4.0.7-nscd-socket-path.patch | 31 |
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; |