diff options
author | Florian Weimer <fweimer@redhat.com> | 2013-08-16 09:38:52 +0200 |
---|---|---|
committer | Florian Weimer <fweimer@redhat.com> | 2013-08-16 09:40:34 +0200 |
commit | 91ce40854d0b7f865cf5024ef95a8026b76096f3 (patch) | |
tree | 268277f390b889cc857152d268242bd603036b9e /sysdeps/posix/dirstream.h | |
parent | ca0a6bc4c5c53aa6c4a735c36336408a06b8cd89 (diff) | |
download | glibc-91ce40854d0b7f865cf5024ef95a8026b76096f3.tar glibc-91ce40854d0b7f865cf5024ef95a8026b76096f3.tar.gz glibc-91ce40854d0b7f865cf5024ef95a8026b76096f3.tar.bz2 glibc-91ce40854d0b7f865cf5024ef95a8026b76096f3.zip |
CVE-2013-4237, BZ #14699: Buffer overflow in readdir_r
* sysdeps/posix/dirstream.h (struct __dirstream): Add errcode
member.
* sysdeps/posix/opendir.c (__alloc_dir): Initialize errcode
member.
* sysdeps/posix/rewinddir.c (rewinddir): Reset errcode member.
* sysdeps/posix/readdir_r.c (__READDIR_R): Enforce NAME_MAX limit.
Return delayed error code. Remove GETDENTS_64BIT_ALIGNED
conditional.
* sysdeps/unix/sysv/linux/wordsize-64/readdir_r.c: Do not define
GETDENTS_64BIT_ALIGNED.
* sysdeps/unix/sysv/linux/i386/readdir64_r.c: Likewise.
* manual/filesys.texi (Reading/Closing Directory): Document
ENAMETOOLONG return value of readdir_r. Recommend readdir more
strongly.
* manual/conf.texi (Limits for Files): Add portability note to
NAME_MAX, PATH_MAX.
(Pathconf): Add portability note for _PC_NAME_MAX, _PC_PATH_MAX.
Diffstat (limited to 'sysdeps/posix/dirstream.h')
-rw-r--r-- | sysdeps/posix/dirstream.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/sysdeps/posix/dirstream.h b/sysdeps/posix/dirstream.h index a7a074d357..8e8570dd48 100644 --- a/sysdeps/posix/dirstream.h +++ b/sysdeps/posix/dirstream.h @@ -39,6 +39,8 @@ struct __dirstream off_t filepos; /* Position of next entry to read. */ + int errcode; /* Delayed error code. */ + /* Directory block. */ char data[0] __attribute__ ((aligned (__alignof__ (void*)))); }; |