7073913: The fix for 7017193 causes segfaults
Buffer overflow in os::get_line_chars
Reviewed-by: coleenp, dholmes, dcubed
diff --git a/hotspot/src/share/vm/runtime/os.cpp b/hotspot/src/share/vm/runtime/os.cpp
index 5da1108..28c6559 100644
--- a/hotspot/src/share/vm/runtime/os.cpp
+++ b/hotspot/src/share/vm/runtime/os.cpp
@@ -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
}