Skip to content
Snippets Groups Projects
Commit a1d801c3 authored by Frank Stein's avatar Frank Stein
Browse files

2Gb buffer size checks fixed for Python Builder

parent 4798456d
No related branches found
No related tags found
No related merge requests found
...@@ -93,7 +93,7 @@ class Builder(object): ...@@ -93,7 +93,7 @@ class Builder(object):
The internal buffer is grown as needed. The internal buffer is grown as needed.
""" """
if not (0 <= initialSize < (2**UOffsetTFlags.bytewidth - 1)): if not (0 <= initialSize <= self.MaxBufferSize()):
msg = "flatbuffers: Cannot create Builder larger than 2 gigabytes." msg = "flatbuffers: Cannot create Builder larger than 2 gigabytes."
raise BuilderSizeError(msg) raise BuilderSizeError(msg)
...@@ -104,6 +104,12 @@ class Builder(object): ...@@ -104,6 +104,12 @@ class Builder(object):
self.objectEnd = None self.objectEnd = None
self.vtables = [] self.vtables = []
def MaxBufferSize(self):
"""
Maximum buffer size is 2Gb.
"""
return 2**31
def Output(self): def Output(self):
""" """
Output returns the portion of the buffer that has been used for Output returns the portion of the buffer that has been used for
...@@ -238,7 +244,7 @@ class Builder(object): ...@@ -238,7 +244,7 @@ class Builder(object):
def growByteBuffer(self): def growByteBuffer(self):
"""Doubles the size of the byteslice, and copies the old data towards """Doubles the size of the byteslice, and copies the old data towards
the end of the new buffer (since we build the buffer backwards).""" the end of the new buffer (since we build the buffer backwards)."""
if not len(self.Bytes) <= 2**20: if not len(self.Bytes) <= self.MaxBufferSize():
msg = "flatbuffers: cannot grow buffer beyond 2 gigabytes" msg = "flatbuffers: cannot grow buffer beyond 2 gigabytes"
raise BuilderSizeError(msg) raise BuilderSizeError(msg)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment