binman: Refuse to replace sections for now
Binman interfaces allow attempts to replace any entry in the image with arbitrary data. When trying to replace sections, the changes in the section entry's data are not propagated to its child entries. This, combined with how sections rebuild their contents from its children, eventually causes the replaced contents to be silently overwritten by rebuilt contents equivalent to the original data. Add a simple test for replacing a section that is currently failing due to this behaviour, and mark it as an expected failure. Also, raise an error when replacing a section instead of silently pretending it was replaced. Signed-off-by: Alper Nebi Yasak <alpernebiyasak@gmail.com> Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
99283e5389
commit
82337bb6b6
@ -788,6 +788,9 @@ class Entry_section(Entry):
|
||||
data = new_data
|
||||
return data
|
||||
|
||||
def WriteData(self, data, decomp=True):
|
||||
self.Raise("Replacing sections is not implemented yet")
|
||||
|
||||
def WriteChildData(self, child):
|
||||
return True
|
||||
|
||||
|
@ -5693,6 +5693,15 @@ fdt fdtmap Extract the devicetree blob from the fdtmap
|
||||
self.assertIsNotNone(path)
|
||||
self.assertEqual(expected_fdtmap, fdtmap)
|
||||
|
||||
@unittest.expectedFailure
|
||||
def testReplaceSectionSimple(self):
|
||||
"""Test replacing a simple section with arbitrary data"""
|
||||
new_data = b'w' * len(COMPRESS_DATA + U_BOOT_DATA)
|
||||
data, expected_fdtmap, _ = self._RunReplaceCmd(
|
||||
'section', new_data,
|
||||
dts='234_replace_section_simple.dts')
|
||||
self.assertEqual(new_data, data)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
23
tools/binman/test/234_replace_section_simple.dts
Normal file
23
tools/binman/test/234_replace_section_simple.dts
Normal file
@ -0,0 +1,23 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/dts-v1/;
|
||||
|
||||
/ {
|
||||
binman {
|
||||
allow-repack;
|
||||
|
||||
u-boot-dtb {
|
||||
};
|
||||
|
||||
section {
|
||||
blob {
|
||||
filename = "compress";
|
||||
};
|
||||
|
||||
u-boot {
|
||||
};
|
||||
};
|
||||
|
||||
fdtmap {
|
||||
};
|
||||
};
|
||||
};
|
Loading…
Reference in New Issue
Block a user