Commit graph

225 commits

Author SHA1 Message Date
David Renshaw
d310db1e88 Prevent potential integer overflow in BuilderArena.allocate(). 2021-05-13 17:49:01 -04:00
David Renshaw
754184fd74 bump version numbers to 0.1.8-SNAPSHOT 2021-05-12 21:00:16 -04:00
David Renshaw
5bf2c368e3 0.1.7 release 2021-05-12 20:57:00 -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
a6c5240790 bump version numbers to 0.1.7-SNAPSHOT 2021-05-11 21:49:54 -04:00
David Renshaw
ee7e9a0d07 publish 0.1.6 2021-05-11 21:46:25 -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
David Renshaw
cf62cd4a58 Fix build on Fedora 33 2020-12-06 20:47:53 -05: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
dependabot[bot]
9d06495851 Bump junit from 4.12 to 4.13.1 in /runtime
Bumps [junit](https://github.com/junit-team/junit4) from 4.12 to 4.13.1.
- [Release notes](https://github.com/junit-team/junit4/releases)
- [Changelog](https://github.com/junit-team/junit4/blob/main/doc/ReleaseNotes4.12.md)
- [Commits](https://github.com/junit-team/junit4/compare/r4.12...r4.13.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-13 18:20:37 -04:00
David Renshaw
880adcfe5e set sourceEncoding to UTF-8 2020-05-13 17:56:01 -04:00
David Renshaw
4cc34896b4 add StructList.newFactory method, allowing type parameters to be inferred 2020-05-12 23:29:16 -04:00
David Renshaw
f98f187538 bump version numbers 2020-05-12 23:03:41 -04:00
David Renshaw
74b645217f configure publishing to the Central Repository, and publish version 0.1.5 2020-05-12 22:41:15 -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