summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog.csl7
-rw-r--r--gdb/remote-fileio.c11
2 files changed, 17 insertions, 1 deletions
diff --git a/ChangeLog.csl b/ChangeLog.csl
index bf3c87b7f03..aace2ccdac6 100644
--- a/ChangeLog.csl
+++ b/ChangeLog.csl
@@ -1,3 +1,10 @@
+2006-06-10 Daniel Jacobowitz <dan@codesourcery.com>
+
+ Issue #669
+ gdb/
+ * remote-fileio.c (remote_fileio_func_read): Limit console
+ reads to 8K.
+
2006-06-09 Nathan Sidwell <nathan@codesourcery.com>
gdb/testsuite/
diff --git a/gdb/remote-fileio.c b/gdb/remote-fileio.c
index 952c31875ab..e8195279635 100644
--- a/gdb/remote-fileio.c
+++ b/gdb/remote-fileio.c
@@ -751,7 +751,16 @@ remote_fileio_func_read (char *buf)
}
else
{
- ret = ui_file_read (gdb_stdtargin, (char *) buffer, 32767);
+ /* NOTE drow/2006-06-10: Windows (mingw32) has a truly
+ bizarre bug. If a handle is backed by a real console
+ device, overly large reads from the console will fail
+ and set errno == ENOMEM. On a Windows Server 2003
+ system where I tested, reading 26608 bytes from the
+ console was OK, but anything about 26609 bytes would
+ fail. So, we limit this read to something smaller
+ than that - by a safe margin, in case the limit
+ depends on system resources or version. */
+ ret = ui_file_read (gdb_stdtargin, (char *) buffer, 8191);
remote_fio_no_longjmp = 1;
if (ret > 0 && (size_t)ret > length)
{