aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--nscd/connections.c8
-rw-r--r--nscd/nscd_getgr_r.c13
-rw-r--r--sysdeps/i386/bits/byteswap.h8
4 files changed, 29 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 532f003e20..e2449b29c5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+1998-07-25 Ulrich Drepper <drepper@cygnus.com>
+
+ * sysdeps/i386/bits/byteswap.h (__bswap_64): Change __v to __w to
+ prevent conflict with __bswap_32.
+
1998-07-24 21:29 Ulrich Drepper <drepper@cygnus.com>
* nscd/connections.c (pw_send_answer): Make one single writev call.
diff --git a/nscd/connections.c b/nscd/connections.c
index e11132c514..582a6cf8f0 100644
--- a/nscd/connections.c
+++ b/nscd/connections.c
@@ -502,6 +502,14 @@ gr_send_answer (int conn, struct group *grp)
}
/* Send all the data. */
+ while (nblocks > UIO_MAXIOV)
+ {
+ if (writev (sock[conn], vec, UIO_MAXIOV) != total_len)
+ dbg_log (_("write incomplete on send group answer: %s"),
+ strerror (errno));
+ vec += UIO_MAXIOV;
+ nblocks -= UIO_MAXIOV;
+ }
if (writev (sock[conn], vec, nblocks) != total_len)
dbg_log (_("write incomplete on send group answer: %s"),
strerror (errno));
diff --git a/nscd/nscd_getgr_r.c b/nscd/nscd_getgr_r.c
index 9b3022c764..85ebb0dc60 100644
--- a/nscd/nscd_getgr_r.c
+++ b/nscd/nscd_getgr_r.c
@@ -232,7 +232,18 @@ __nscd_getgr_r (const char *key, request_type type, struct group *resultbuf,
*p++ = '\0';
}
- if (__readv (sock, vec, gr_resp.gr_mem_len) != total_len)
+ while (i > UIO_MAXIOV)
+ {
+ if (__readv (sock, vec, UIO_MAXIOV) != total_len)
+ {
+ __close (sock);
+ return -1;
+ }
+ vec += UIO_MAXIOV;
+ i -= UIO_MAXIOV;
+ }
+
+ if (__readv (sock, vec, i) != total_len)
{
__close (sock);
return -1;
diff --git a/sysdeps/i386/bits/byteswap.h b/sysdeps/i386/bits/byteswap.h
index 1eef351a0c..760e0751c9 100644
--- a/sysdeps/i386/bits/byteswap.h
+++ b/sysdeps/i386/bits/byteswap.h
@@ -83,9 +83,9 @@
/* Swap bytes in 64 bit value. */
# define __bswap_64(x) \
({ union { unsigned long long int __ll; \
- unsigned long int __l[2]; } __v, __r; \
- __v.__ll = (x); \
- __r.__l[0] = __bswap_32 (__v.__l[1]); \
- __r.__l[1] = __bswap_32 (__v.__l[0]); \
+ unsigned long int __l[2]; } __w, __r; \
+ __w.__ll = (x); \
+ __r.__l[0] = __bswap_32 (__w.__l[1]); \
+ __r.__l[1] = __bswap_32 (__w.__l[0]); \
__r.__ll; })
#endif