David Renshaw
a55b869305
implement MessageBuilder.unsafeConstructFromMessageReader()
2021-05-24 13:06:42 -04:00
David Renshaw
a078df7e4d
add support for directly serializing a MessageReader
...
Previously, you would need to copy the message into a MessageBuilder first.
2021-05-24 11:49:20 -04:00
David Renshaw
d310db1e88
Prevent potential integer overflow in BuilderArena.allocate().
2021-05-13 17:49:01 -04:00
David Renshaw
4ec14e39f9
be more careful about integer overflow in Serialize.read()
...
Previously, we were attempting to read the entire message
in one call to fillBuffer(). This was doomed to fail
if the message had more than Integer.MAX_VALUE bytes.
After this diff, we will call fillBuffer() separately for each
segment. This approach turns out to be simpler, too.
It might imply a small performance hit for messages with
many small segments, but such messages are discouraged anyway.
This diff also adds more overflow checking in the surrounding
logic.
2021-05-12 20:13:52 -04:00
David Renshaw
8dbd5cf25f
make new unit test less memory intensive
2021-05-11 21:12:10 -04:00
David Renshaw
eb73990798
fix potential overflow in DefaultAllocator
...
Fixes a bug where the allocator's `nextSize` variable could overflow
and become negative, causing more segments to be allocated than expected.
Also removes a duplicate `this.nextSize += size` statement that
likely made the problem worse.
2021-05-11 21:07:37 -04:00
David Renshaw
07e47d4104
add some documentation about the new 'no limit' option
2021-05-09 14:53:54 -04:00
Wim Dumon
cc4fa2bbc8
Offer option to disable traversalLimitInWords
...
Use case: large trusted input data file, mapped in memory by
MappedByteBuffer, which is often re-queried so a sensible
limit cannot be set.
2021-04-28 17:47:58 +02:00
Vaci Koblizek
91a93734e1
generalise AnyPointer setAs AnyPointer
2020-11-10 11:34:26 +00:00
Vaci Koblizek
f8cdfdea09
set AnyPointer from AnyPointer
2020-11-09 18:02:05 +00:00
David Renshaw
4cc34896b4
add StructList.newFactory method, allowing type parameters to be inferred
2020-05-12 23:29:16 -04:00
David Renshaw
94d15d7720
fix problems found by -Xlink:unchecked
2020-05-12 20:41:36 -04:00
David Renshaw
79ffb37b4c
sbt -> maven, scalatest -> junit
2020-05-12 20:17:47 -04:00
David Renshaw
0e99996372
Throw exception on 0-byte read.
2020-05-08 09:09:18 -04:00
Yann Massard
a16a8b517c
#78 improve exception handling
2020-04-29 07:42:51 -04:00
David Renshaw
09eec64941
make Allocator public
2019-05-20 18:12:19 -04:00
David Renshaw
1d51317074
update benchmark to use scratch space if requested
2019-05-04 11:09:07 -04:00
David Renshaw
f00f02de77
make DefaultAllocator public and add a default constructor
2019-05-04 10:43:51 -04:00
David Renshaw
755114c1a3
implement scratch space reuse
2019-05-04 10:33:55 -04:00
David Renshaw
3c60400dae
make SUGGESTED_FIRST_SEGMENT_WORDS the default
2019-05-04 09:33:09 -04:00
David Renshaw
0ff0cfa338
support custom allocators for builder segments
2019-05-04 09:33:09 -04:00
David Renshaw
c6762ff0f7
implement StructList.Builder.setWithCaveats()
2019-03-23 10:32:01 -04:00
David Renshaw
45fd638c7c
add some @Override annotations
2019-03-16 08:49:10 -04:00
David Renshaw
6dcfa30e10
ArrayInputStream: return -1 on end-of-stream
2018-06-10 13:25:40 -04:00
David Renshaw
edcbf1f61c
fix bug in ArrayInputStream.read()
2018-06-10 09:32:38 -04:00
David Renshaw
f4411ba2c7
implement asReader() for list types
2018-02-03 14:17:42 -05:00
Amer Banet
906bab78f9
Added pointer index check to StructReader._pointerFieldIsNull and StructBuilder._pointerFieldIsNull
...
This fixes an IndexOutOfBoundsException when checking for existence of later added fields which are only known on the receiver side (working with different schema versions)
2017-12-13 21:43:46 +01:00
David Renshaw
349d2bfde7
update method name is error string
2017-04-24 19:35:12 -04:00
David Renshaw
14237610fb
Fix bug in double-far creation and add StructListUpgradeDoubleFar test.
2017-02-27 18:42:38 -05:00
David Renshaw
1fa0e7a806
DecodeException for unexpected FAR pointer in copyPointer()
2017-02-27 12:10:36 -05:00
David Renshaw
a344568fe8
Adjust error message for the case when copyPointer() hits a far pointer.
...
Malformed input can trigger this case and it does not indicate a bug
in the library.
2017-02-26 16:26:38 -05:00
David Renshaw
b27c5d685d
Fix problem in transferPointer() that would have become a bug once orphans are implemented. See 4d4f831a3d
2016-01-12 22:25:35 -05:00
David Renshaw
0fecc0e9b4
Handle zero-sized struct in transferPointer().
2015-12-16 21:55:03 -05:00
David Renshaw
98500483c9
bugfix: packed input reading was broken for runs longer than 128 words.
2015-09-19 16:11:16 -04:00
David Renshaw
252acd2b32
typo
2015-08-17 22:14:50 -04:00
David Renshaw
2127084a53
Update ByteBuffer.position() one last time before returning from Serialize.read().
2015-08-17 22:13:06 -04:00
David Renshaw
7f13ed114a
Some minor nitpicks.
2015-06-13 15:03:20 -07:00
Mark Raynsford
63c56646de
Implement computeSerializedSizeInWords for non-packed messages. Addresses #33 .
2015-06-13 15:01:36 +00:00
David Renshaw
49a5c6ba64
Implementent MessageBuilder.getRoot() and MessageBuilder.setRoot().
2015-06-11 22:40:30 -04:00
Ben Challenor
d2634a21d0
Support reading all segments from a single ByteBuffer, with tests
...
Sometimes it is desirable to read all segments from a single ByteBuffer,
e.g. if reading messages from a memory-mapped file.
Here we add such support, and add a test to check that the ByteBuffer
read behaves the same as the ReadableByteChannel read.
2015-05-03 19:04:07 +01:00
Ben Challenor
28fac634bc
Idiomatic scala - remove explicit return
2015-05-03 15:43:09 +01:00
Ben Challenor
c601c6805f
Idiomatic scala - override method with val
2015-05-03 15:42:26 +01:00
Ben Challenor
50f4fe9d51
Idiomatic Scala - remove semicolons
...
Note this means that a few newlines have to be added to eliminate
ambiguity.
2015-05-03 15:35:07 +01:00
Ben Challenor
2ec3b6b125
Rename Scala files to match class names
2015-05-03 15:05:41 +01:00
David Renshaw
717d977233
Fix integer overflow issues.
2015-04-20 21:10:52 -04:00
David Renshaw
0e8fe55593
Fix integer overflow bugs.
2015-03-08 20:39:44 -04:00
David Renshaw
2b1d5c201e
Fix integer underflow bug.
2015-03-08 20:09:56 -04:00
David Renshaw
6cd61ff149
Prevent CPU amplification attack.
2015-03-03 10:46:42 -05:00
David Renshaw
a127b08191
add missing return statement
2015-03-03 09:44:04 -05:00
David Renshaw
8a06a595f6
stub package documentation
2015-01-29 10:33:45 -05:00