summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--debug/read_chk.c4
-rw-r--r--debug/readlink_chk.c4
3 files changed, 9 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index 45915dc6e6..ac79e43fd3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -8,6 +8,11 @@
* posix/bits/unistd.h: Avoid calling __*_chk variants if we can
determine the call will never trigger a failure.
+ * debug/read_chk.c (__read_chk): Always fail if the buffer is too
+ small.
+ * debug/readlink_chk.c (__readlink_chk): Likewise.
+ * debug/pread64_chk.c (__pread64_chk): Likewise.
+ * debug/pread_chk.c (__pread_chk): Likewise.
* sysdeps/i386/i686/memset_chk.S: Remove alias and warning.
* sysdeps/x86_64/memset_chk.S: Likewise.
diff --git a/debug/read_chk.c b/debug/read_chk.c
index f738c48d6b..da2bc945b7 100644
--- a/debug/read_chk.c
+++ b/debug/read_chk.c
@@ -31,8 +31,8 @@ __read_chk (int fd, void *buf, size_t nbytes, size_t buflen)
__chk_fail ();
#ifdef HAVE_INLINED_SYSCALLS
- return = INLINE_SYSCALL (read, 3, fd, buf, nbytes);
+ return INLINE_SYSCALL (read, 3, fd, buf, nbytes);
#else
- return = __read (fd, buf, nbytes);
+ return __read (fd, buf, nbytes);
#endif
}
diff --git a/debug/readlink_chk.c b/debug/readlink_chk.c
index d8d61dc699..ac18ee2c29 100644
--- a/debug/readlink_chk.c
+++ b/debug/readlink_chk.c
@@ -31,8 +31,8 @@ __readlink_chk (const char *path, void *buf, size_t len, size_t buflen)
__chk_fail ();
#ifdef HAVE_INLINED_SYSCALLS
- return INLINE_SYSCALL (readlink, 3, path, buf, MIN (len, buflen + 1));
+ return INLINE_SYSCALL (readlink, 3, path, buf, len);
#else
- return __readlink (path, buf, MIN (len, buflen + 1));
+ return __readlink (path, buf, len);
#endif
}