libfdt: Detected out-of-space with fdt_finish()

At present the Python sequential-write interface can produce an error when
it calls fdt_finish(), since this needs to add a terminating tag to the
end of the struct section.

Fix this by automatically expanding the buffer if needed.

Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Simon Glass 2020-09-01 05:13:56 -06:00
parent e9d336d866
commit 211cfa503f

View file

@ -786,7 +786,8 @@ class FdtSw(FdtRo):
Fdt object allowing access to the newly created device tree
"""
fdtsw = bytearray(self._fdt)
check_err(fdt_finish(fdtsw))
while self.check_space(fdt_finish(fdtsw)):
fdtsw = bytearray(self._fdt)
return Fdt(fdtsw)
def check_space(self, val):