This is the mail archive of the libc-alpha@sources.redhat.com mailing list for the glibc project.


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

CMSG_FIRSTHDR() and CMSG_NXTHDR()


Hi,

CMSG_NXTHDR() in glibc-2.2.x ignores last ancillary data.  
Here's the fix.

USAGI CVS Branch: b2_2_3-FIX_20010512

Index: sysdeps/unix/sysv/linux/cmsg_nxthdr.c
===================================================================
RCS file: /cvsroot/usagi/usagi/libc/glibc22/sysdeps/unix/sysv/linux/cmsg_nxthdr.c,v
retrieving revision 1.1.1.2
retrieving revision 1.1.1.2.2.1
diff -u -r1.1.1.2 -r1.1.1.2.2.1
--- sysdeps/unix/sysv/linux/cmsg_nxthdr.c	2001/04/30 16:42:10	1.1.1.2
+++ sysdeps/unix/sysv/linux/cmsg_nxthdr.c	2001/05/11 15:59:02	1.1.1.2.2.1
@@ -29,7 +29,7 @@
 
   cmsg = (struct cmsghdr *) ((unsigned char *) cmsg
 			     + CMSG_ALIGN (cmsg->cmsg_len));
-  if ((unsigned char *) (cmsg + 1) >= ((unsigned char *) mhdr->msg_control
+  if ((unsigned char *) (cmsg + 1) > ((unsigned char *) mhdr->msg_control
 				       + mhdr->msg_controllen)
       || ((unsigned char *) cmsg + CMSG_ALIGN (cmsg->cmsg_len)
 	  > ((unsigned char *) mhdr->msg_control + mhdr->msg_controllen)))
Index: sysdeps/unix/sysv/linux/bits/socket.h
===================================================================
RCS file: /cvsroot/usagi/usagi/libc/glibc22/sysdeps/unix/sysv/linux/bits/socket.h,v
retrieving revision 1.1.1.4
retrieving revision 1.1.1.4.2.1
diff -u -r1.1.1.4 -r1.1.1.4.2.1
--- sysdeps/unix/sysv/linux/bits/socket.h	2001/02/23 02:08:45	1.1.1.4
+++ sysdeps/unix/sysv/linux/bits/socket.h	2001/05/11 15:59:03	1.1.1.4.2.1
@@ -262,7 +262,7 @@
 
   __cmsg = (struct cmsghdr *) ((unsigned char *) __cmsg
 			       + CMSG_ALIGN (__cmsg->cmsg_len));
-  if ((unsigned char *) (__cmsg + 1) >= ((unsigned char *) __mhdr->msg_control
+  if ((unsigned char *) (__cmsg + 1) > ((unsigned char *) __mhdr->msg_control
 					 + __mhdr->msg_controllen)
       || ((unsigned char *) __cmsg + CMSG_ALIGN (__cmsg->cmsg_len)
 	  > ((unsigned char *) __mhdr->msg_control + __mhdr->msg_controllen)))

-- 
Hideaki YOSHIFUJI @ USAGI Project  <yoshfuji@linux-ipv6.org>
PGP5i FP: F731 6599 5EB2 BBA7 1515  1323 1806 A96F 5700 6B25 


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