changeset 3832:46cb9a7b8b01

7073913: The fix for 7017193 causes segfaults Summary: Buffer overflow in os::get_line_chars Reviewed-by: coleenp, dholmes, dcubed Contributed-by: aph@redhat.com
author dsamersoff
date Wed, 10 Aug 2011 15:04:21 +0400
parents ca1f1753c866
children a68e11dceb83
files src/share/vm/runtime/os.cpp
diffstat 1 files changed, 2 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/share/vm/runtime/os.cpp	Thu Jul 28 14:10:21 2011 -0400
+++ b/src/share/vm/runtime/os.cpp	Wed Aug 10 15:04:21 2011 +0400
@@ -1299,7 +1299,7 @@
   size_t sz, i = 0;
 
   // read until EOF, EOL or buf is full
-  while ((sz = (int) read(fd, &buf[i], 1)) == 1 && i < (bsize-1) && buf[i] != '\n') {
+  while ((sz = (int) read(fd, &buf[i], 1)) == 1 && i < (bsize-2) && buf[i] != '\n') {
      ++i;
   }
 
@@ -1320,7 +1320,7 @@
   }
 
   // line is longer than size of buf, skip to EOL
-  int ch;
+  char ch;
   while (read(fd, &ch, 1) == 1 && ch != '\n') {
     // Do nothing
   }