[BZ #2418]
authorUlrich Drepper <drepper@redhat.com>
Sun, 2 Apr 2006 17:59:59 +0000 (17:59 +0000)
committerUlrich Drepper <drepper@redhat.com>
Sun, 2 Apr 2006 17:59:59 +0000 (17:59 +0000)
2006-04-02  Ulrich Drepper  <drepper@redhat.com>
[BZ #2418]
* sysdeps/unix/sysv/linux/bits/socket.h: Use larger of PATH_MAX and
page size when allocating buffer.

ChangeLog
sysdeps/unix/sysv/linux/bits/socket.h
sysdeps/unix/sysv/linux/getcwd.c

index 22ea01d..c34f84a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2006-04-02  Ulrich Drepper  <drepper@redhat.com>
+
+       [BZ #2418]
+       * sysdeps/unix/sysv/linux/bits/socket.h: Use larger of PATH_MAX and
+       page size when allocating buffer.
+
 2006-04-01  Ulrich Drepper  <drepper@redhat.com>
 
        [BZ #2415]
index 77e9b83..356a2ec 100644 (file)
@@ -1,5 +1,5 @@
 /* System-specific socket constants and types.  Linux version.
-   Copyright (C) 1991,1992,1994-2001, 2004 Free Software Foundation, Inc.
+   Copyright (C) 1991,1992,1994-2001,2004,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
@@ -221,7 +221,10 @@ struct msghdr
     size_t msg_iovlen;         /* Number of elements in the vector.  */
 
     void *msg_control;         /* Ancillary data (eg BSD filedesc passing). */
-    size_t msg_controllen;     /* Ancillary data buffer length.  */
+    size_t msg_controllen;     /* Ancillary data buffer length.
+                                  !! The type should be socklen_t but the
+                                  definition of the kernel is incompatible
+                                  with this.  */
 
     int msg_flags;             /* Flags on received message.  */
   };
@@ -230,7 +233,10 @@ struct msghdr
 struct cmsghdr
   {
     size_t cmsg_len;           /* Length of data in cmsg_data plus length
-                                  of cmsghdr structure.  */
+                                  of cmsghdr structure.
+                                  !! The type should be socklen_t but the
+                                  definition of the kernel is incompatible
+                                  with this.  */
     int cmsg_level;            /* Originating protocol.  */
     int cmsg_type;             /* Protocol specific type.  */
 #if (!defined __STRICT_ANSI__ && __GNUC__ >= 2) || __STDC_VERSION__ >= 199901L
index 1a308ca..911d85f 100644 (file)
@@ -87,7 +87,7 @@ __getcwd (char *buf, size_t size)
          return NULL;
        }
 
-      alloc_size = PATH_MAX;
+      alloc_size = MAX (PATH_MAX, __getpagesize ());
     }
 
   if (buf == NULL)