diff --git a/modules/quercus/src/com/caucho/quercus/lib/MiscModule.java b/modules/quercus/src/com/caucho/quercus/lib/MiscModule.java index b9993af..f197fcf 100644 --- a/modules/quercus/src/com/caucho/quercus/lib/MiscModule.java +++ b/modules/quercus/src/com/caucho/quercus/lib/MiscModule.java @@ -1290,6 +1290,9 @@ public class MiscModule extends AbstractQuercusModule { StringValue sb = env.createStringBuilder(); for (int i = _length / 2 - 1; i >= 0; i--) { int ch = is.read(); + if (ch == -1) { + break; + } sb.append(digitToHex(ch >> 4)); sb.append(digitToHex(ch)); @@ -1375,6 +1378,9 @@ public class MiscModule extends AbstractQuercusModule { StringValue sb = env.createStringBuilder(); for (int i = _length / 2 - 1; i >= 0; i--) { int ch = is.read(); + if (ch == -1) { + break; + } sb.append(digitToHex(ch)); sb.append(digitToHex(ch >> 4)); @@ -1459,9 +1465,12 @@ public class MiscModule extends AbstractQuercusModule { long v = 0; for (int k = 0; k < _bytes; k++) { - long d = is.read() & 0xff; + int d = is.read(); + if (d == -1) { + return; + } - v = (v << 8) + d; + v = (v << 8) + (d & 0xff); } if (_isSigned) { @@ -1553,9 +1562,12 @@ public class MiscModule extends AbstractQuercusModule { long v = 0; for (int k = 0; k < _bytes; k++) { - long d = is.read() & 0xff; + int d = is.read(); + if (d == -1) { + return; + } - v |= d << 8 * k; + v |= (d & 0xff) << 8 * k; } result.put(key, LongValue.create(v)); @@ -1630,9 +1642,12 @@ public class MiscModule extends AbstractQuercusModule { long v = 0; for (int k = 0; k < 8; k++) { - long d = is.read() & 0xff; + int d = is.read(); + if (d == -1) { + return; + } - v = 256 * v + d; + v = 256 * v + (d & 0xff); } result.put(key, new DoubleValue(Double.longBitsToDouble(v))); @@ -1707,9 +1722,12 @@ public class MiscModule extends AbstractQuercusModule { int v = 0; for (int k = 0; k < 4; k++) { - int d = is.read() & 0xff; + int d = is.read(); + if (d == -1) { + return; + } - v = 256 * v + d; + v = 256 * v + (d & 0xff); } result.put(key, new DoubleValue(Float.intBitsToFloat(v))); @@ -1752,7 +1770,9 @@ public class MiscModule extends AbstractQuercusModule { throws IOException { for (int i = 0; i < _length; i++) - is.read(); + if (is.read() == -1) { + break; + } } }