diff mbox series

[U-Boot,v2,20/31] binman: Detect bad CBFS file types

Message ID 20190708202553.225715-21-sjg@chromium.org
State Accepted
Commit 8a1ad068deef6228fd501992bdb347ecad9da067
Delegated to: Simon Glass
Headers show
Series binman: Allow reading of images to list contents | expand

Commit Message

Simon Glass July 8, 2019, 8:25 p.m. UTC
Detect when an unknown or unsupported file type is specified and report
an error.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

Changes in v2: None

 tools/binman/etype/cbfs.py              |  3 +++
 tools/binman/ftest.py                   |  6 ++++++
 tools/binman/test/126_cbfs_bad_type.dts | 17 +++++++++++++++++
 3 files changed, 26 insertions(+)
 create mode 100644 tools/binman/test/126_cbfs_bad_type.dts

Comments

Simon Glass July 18, 2019, 1:58 a.m. UTC | #1
Detect when an unknown or unsupported file type is specified and report
an error.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

Changes in v2: None

 tools/binman/etype/cbfs.py              |  3 +++
 tools/binman/ftest.py                   |  6 ++++++
 tools/binman/test/126_cbfs_bad_type.dts | 17 +++++++++++++++++
 3 files changed, 26 insertions(+)
 create mode 100644 tools/binman/test/126_cbfs_bad_type.dts

Applied to u-boot-dm, thanks!
diff mbox series

Patch

diff --git a/tools/binman/etype/cbfs.py b/tools/binman/etype/cbfs.py
index a46bb98a033..175ecae1584 100644
--- a/tools/binman/etype/cbfs.py
+++ b/tools/binman/etype/cbfs.py
@@ -190,6 +190,9 @@  class Entry_cbfs(Entry):
             elif entry._type == 'stage':
                 cfile = cbfs.add_file_stage(entry._cbfs_name, data,
                                             entry._cbfs_offset)
+            else:
+                entry.Raise("Unknown cbfs-type '%s' (use 'raw', 'stage')" %
+                            entry._type)
             if cfile:
                 entry._cbfs_file = cfile
                 entry.size = cfile.data_len
diff --git a/tools/binman/ftest.py b/tools/binman/ftest.py
index 999d8884aca..21bea6c9d13 100644
--- a/tools/binman/ftest.py
+++ b/tools/binman/ftest.py
@@ -2185,6 +2185,12 @@  class TestFunctional(unittest.TestCase):
             'cbfs/u-boot-dtb:image-pos': 0xb8,
             }, props)
 
+    def testCbfsBadType(self):
+        """Test an image header with a no specified location is detected"""
+        with self.assertRaises(ValueError) as e:
+            self._DoReadFile('126_cbfs_bad_type.dts')
+        self.assertIn("Unknown cbfs-type 'badtype'", str(e.exception))
+
 
 if __name__ == "__main__":
     unittest.main()
diff --git a/tools/binman/test/126_cbfs_bad_type.dts b/tools/binman/test/126_cbfs_bad_type.dts
new file mode 100644
index 00000000000..2cd6fc6d52d
--- /dev/null
+++ b/tools/binman/test/126_cbfs_bad_type.dts
@@ -0,0 +1,17 @@ 
+// SPDX-License-Identifier: GPL-2.0+
+
+/dts-v1/;
+
+/ {
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	binman {
+		cbfs {
+			size = <0x100>;
+			u-boot {
+				cbfs-type = "badtype";
+			};
+		};
+	};
+};