mirror of
https://github.com/openjdk/jdk.git
synced 2026-04-17 10:20:33 +00:00
8059485: Resolve parsing ambiguity
Reviewed-by: mullan, vinnie
This commit is contained in:
parent
48ac606390
commit
64881fb307
@ -156,12 +156,18 @@ class DerIndefLenConverter {
|
||||
}
|
||||
if (isLongForm(lenByte)) {
|
||||
lenByte &= LEN_MASK;
|
||||
if (lenByte > 4)
|
||||
if (lenByte > 4) {
|
||||
throw new IOException("Too much data");
|
||||
if ((dataSize - dataPos) < (lenByte + 1))
|
||||
}
|
||||
if ((dataSize - dataPos) < (lenByte + 1)) {
|
||||
throw new IOException("Too little data");
|
||||
for (int i = 0; i < lenByte; i++)
|
||||
}
|
||||
for (int i = 0; i < lenByte; i++) {
|
||||
curLen = (curLen << 8) + (data[dataPos++] & 0xff);
|
||||
}
|
||||
if (curLen < 0) {
|
||||
throw new IOException("Invalid length bytes");
|
||||
}
|
||||
} else {
|
||||
curLen = (lenByte & LEN_MASK);
|
||||
}
|
||||
@ -188,10 +194,15 @@ class DerIndefLenConverter {
|
||||
}
|
||||
if (isLongForm(lenByte)) {
|
||||
lenByte &= LEN_MASK;
|
||||
for (int i = 0; i < lenByte; i++)
|
||||
for (int i = 0; i < lenByte; i++) {
|
||||
curLen = (curLen << 8) + (data[dataPos++] & 0xff);
|
||||
} else
|
||||
}
|
||||
if (curLen < 0) {
|
||||
throw new IOException("Invalid length bytes");
|
||||
}
|
||||
} else {
|
||||
curLen = (lenByte & LEN_MASK);
|
||||
}
|
||||
writeLength(curLen);
|
||||
writeValue(curLen);
|
||||
}
|
||||
|
||||
@ -577,6 +577,10 @@ public class DerInputStream {
|
||||
value <<= 8;
|
||||
value += 0x0ff & in.read();
|
||||
}
|
||||
if (value < 0) {
|
||||
throw new IOException("DerInputStream.getLength(): "
|
||||
+ "Invalid length bytes");
|
||||
}
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
@ -95,6 +95,9 @@ public final class BerDecoder extends Ber {
|
||||
for( int i = 0; i < lengthbyte; i++) {
|
||||
retval = (retval << 8) + (buf[offset++] & 0xff);
|
||||
}
|
||||
if (retval < 0) {
|
||||
throw new DecodeException("Invalid length bytes");
|
||||
}
|
||||
return retval;
|
||||
} else {
|
||||
return lengthbyte;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user