MIPS n64 socket fix

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

MIPS n64 socket fix

Daniel Jacobowitz-2
The type of msg_iovlen was fixed last year, but msg_controllen was missed,
and so was an old bug fix to __cmsg_nxthdr.  This patch brings the file back
in sync with the common version, except for the intentional differences.

--
Daniel Jacobowitz
CodeSourcery

2006-01-29  Daniel Jacobowitz  <[hidden email]>

        * sysdeps/unix/sysv/linux/mips/bits/socket.h (struct msghdr): Use
        size_t for msg_controllen.
        (__cmsg_nxthdr): Correct test.
        (__SCM_CONNECT): Delete.

Index: libc/sysdeps/unix/sysv/linux/mips/bits/socket.h
===================================================================
--- libc.orig/sysdeps/unix/sysv/linux/mips/bits/socket.h 2006-01-28 12:58:37.000000000 -0500
+++ libc/sysdeps/unix/sysv/linux/mips/bits/socket.h 2006-01-29 10:42:39.000000000 -0500
@@ -1,6 +1,6 @@
 /* System-specific socket constants and types.  Linux/MIPS version.
-   Copyright (C) 1991, 92, 1994-1999, 2000, 2001, 2004, 2005
- Free Software Foundation, Inc.
+   Copyright (C) 1991, 92, 1994-1999, 2000, 2001, 2004, 2005, 2006
+   Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -222,7 +222,7 @@ struct msghdr
     size_t msg_iovlen; /* Number of elements in the vector.  */
 
     void *msg_control; /* Ancillary data (eg BSD filedesc passing). */
-    socklen_t msg_controllen; /* Ancillary data buffer length.  */
+    size_t msg_controllen; /* Ancillary data buffer length.  */
 
     int msg_flags; /* Flags on received message.  */
   };
@@ -270,8 +270,8 @@ __NTH (__cmsg_nxthdr (struct msghdr *__m
 
   __cmsg = (struct cmsghdr *) ((unsigned char *) __cmsg
        + CMSG_ALIGN (__cmsg->cmsg_len));
-  if ((unsigned char *) (__cmsg + 1) >= ((unsigned char *) __mhdr->msg_control
- + __mhdr->msg_controllen)
+  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)))
     /* No more entries.  */
@@ -284,13 +284,12 @@ __NTH (__cmsg_nxthdr (struct msghdr *__m
    <linux/socket.h>.  */
 enum
   {
-    SCM_RIGHTS = 0x01, /* Transfer file descriptors.  */
+    SCM_RIGHTS = 0x01 /* Transfer file descriptors.  */
 #define SCM_RIGHTS SCM_RIGHTS
 #ifdef __USE_BSD
-    SCM_CREDENTIALS = 0x02,     /* Credentials passing.  */
+    , SCM_CREDENTIALS = 0x02 /* Credentials passing.  */
 # define SCM_CREDENTIALS SCM_CREDENTIALS
 #endif
-    __SCM_CONNECT = 0x03 /* Data array is `struct scm_connect'.  */
   };
 
 /* User visible structure for SCM_CREDENTIALS message */