Fix integer underflow bug.
This commit is contained in:
parent
6cd61ff149
commit
2b1d5c201e
2 changed files with 12 additions and 2 deletions
|
@ -379,6 +379,12 @@ class EncodingSuite extends FunSuite {
|
|||
}
|
||||
}
|
||||
|
||||
test("TextBuilderIntUnderflow") {
|
||||
val message = new MessageBuilder();
|
||||
val root = message.initRoot(TestAnyPointer.factory);
|
||||
root.getAnyPointerField.initAs(org.capnproto.Data.factory, 0);
|
||||
a [DecodeException] should be thrownBy root.getAnyPointerField.getAs(org.capnproto.Text.factory);
|
||||
}
|
||||
|
||||
test("VoidListAmplification") {
|
||||
val builder = new MessageBuilder();
|
||||
|
|
|
@ -807,9 +807,13 @@ final class WireHelpers {
|
|||
}
|
||||
|
||||
|
||||
//# Subtract 1 from the size for the NUL terminator.
|
||||
int size = ListPointer.elementCount(resolved.ref);
|
||||
if (size == 0 ||
|
||||
resolved.segment.buffer.get(resolved.ptr * Constants.BYTES_PER_WORD + size - 1) != 0) {
|
||||
throw new DecodeException("Text blob missing NUL terminator.");
|
||||
}
|
||||
return new Text.Builder(resolved.segment.buffer, resolved.ptr * Constants.BYTES_PER_WORD,
|
||||
ListPointer.elementCount(resolved.ref) - 1);
|
||||
size - 1);
|
||||
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue