summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--winsup/cygwin/ChangeLog5
-rw-r--r--winsup/cygwin/fhandler_clipboard.cc3
-rw-r--r--winsup/cygwin/release/1.7.213
3 files changed, 10 insertions, 1 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 1b2562bfa..7c2f442e5 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,5 +1,10 @@
2013-06-17 Corinna Vinschen <corinna@vinschen.de>
+ * fhandler_clipboard.cc (fhandler_dev_clipboard::read): Fix buffer
+ read access overrun when pos > 0.
+
+2013-06-17 Corinna Vinschen <corinna@vinschen.de>
+
* times.cc (GetSystemTimePreciseAsFileTime): Add comment to declaration.
(__to_clock_t): Remove a debug_printf.
(times): Align syscall_printf to debug output of other system calls.
diff --git a/winsup/cygwin/fhandler_clipboard.cc b/winsup/cygwin/fhandler_clipboard.cc
index 1118137c1..db72b9787 100644
--- a/winsup/cygwin/fhandler_clipboard.cc
+++ b/winsup/cygwin/fhandler_clipboard.cc
@@ -295,7 +295,8 @@ fhandler_dev_clipboard::read (void *ptr, size_t& len)
!= (size_t) -1
&& (ret > conv_len
/* Skip separated high surrogate: */
- || ((buf [pos + glen - 1] & 0xFC00) == 0xD800 && glen - pos > 1)))
+ || ((buf [glen - 1] & 0xFC00) == 0xD800
+ && glen - pos > 1)))
--glen;
if (ret == (size_t) -1)
ret = 0;
diff --git a/winsup/cygwin/release/1.7.21 b/winsup/cygwin/release/1.7.21
index 0eb3de3a4..2ea267778 100644
--- a/winsup/cygwin/release/1.7.21
+++ b/winsup/cygwin/release/1.7.21
@@ -8,3 +8,6 @@ Bug fixes:
- Fix long-standing problem which allows to access files via ".." using an
invalid POSIX path, for instance, `cd nonexistant/../existing_dir".
Fixes: http://cygwin.com/ml/cygwin/2013-05/msg00222.html
+
+- Fix EFAULT when reading large clipboard.
+ Fixes: http://cygwin.com/ml/cygwin/2013-06/msg00311.html