Take platforms with small UIO_IOVEC values into account.
authordrepper <drepper>
Fri, 24 Jul 1998 21:48:28 +0000 (21:48 +0000)
committerdrepper <drepper>
Fri, 24 Jul 1998 21:48:28 +0000 (21:48 +0000)
nscd/nscd_getgr_r.c

index 9b3022c..85ebb0d 100644 (file)
@@ -232,7 +232,18 @@ __nscd_getgr_r (const char *key, request_type type, struct group *resultbuf,
              *p++ = '\0';
            }
 
              *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;
            {
              __close (sock);
              return -1;