This is the mail archive of the libc-hacker@sourceware.cygnus.com mailing list for the glibc project.

Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: A new patch for nscd.


> 
> hjl@varesearch.com (H.J. Lu) writes:
> 
> > Here is the revised patch for nscd.
> 
> Yep, this is fine.  Thanks,
> 

The code is hard to read. This patch cleans it up a little bit and
makes it more readable.

-- 
H.J. Lu (hjl@gnu.org)
--
Tue Aug 31 15:19:12 1999  H.J. Lu  <hjl@gnu.org>

	* nscd/nscd_getgr_r.c (nscd_getgr_r): Cleanup the buffer count.

Index: nscd/nscd_getgr_r.c
===================================================================
RCS file: /work/cvs/gnu/glibc-2.1/nscd/nscd_getgr_r.c,v
retrieving revision 1.1.1.15
diff -u -p -r1.1.1.15 nscd_getgr_r.c
--- nscd/nscd_getgr_r.c	1999/08/31 17:28:53	1.1.1.15
+++ nscd/nscd_getgr_r.c	1999/08/31 22:18:14
@@ -147,19 +147,20 @@ nscd_getgr_r (const char *key, size_t ke
 	 align the pointer.  */
       align = ((__alignof__ (char *) - (p - ((char *) 0)))
 	       & (__alignof__ (char *) - 1));
-      if (buflen < (align + (1 + gr_resp.gr_mem_cnt) * sizeof (char *)
-		    + gr_resp.gr_name_len + gr_resp.gr_passwd_len))
+      total_len = align + (1 + gr_resp.gr_mem_cnt) * sizeof (char *)
+		  + gr_resp.gr_name_len + gr_resp.gr_passwd_len;
+      if (buflen < total_len)
 	{
 	no_room:
 	  __set_errno (ERANGE);
 	  __close (sock);
 	  return ERANGE;
 	}
+      buflen -= total_len;
 
       p += align;
       resultbuf->gr_mem = (char **) p;
       p += (1 + gr_resp.gr_mem_cnt) * sizeof (char *);
-      buflen -= align + (1 + gr_resp.gr_mem_cnt) * sizeof (char *);
 
       /* Set pointers for strings.  */
       resultbuf->gr_name = p;
@@ -179,8 +180,6 @@ nscd_getgr_r (const char *key, size_t ke
       vec[1].iov_base = resultbuf->gr_name;
       vec[1].iov_len = gr_resp.gr_name_len + gr_resp.gr_passwd_len;
       total_len += gr_resp.gr_name_len + gr_resp.gr_passwd_len;
-
-      buflen -= gr_resp.gr_name_len + gr_resp.gr_passwd_len;
 
       /* Get this data.  */
       if (__readv (sock, vec, 2) != total_len)

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]