Merge "Use tar header magic bit to check the tarball content"
diff --git a/sw/device/lib/spi_flash.c b/sw/device/lib/spi_flash.c
index 8765118..0e8932e 100644
--- a/sw/device/lib/spi_flash.c
+++ b/sw/device/lib/spi_flash.c
@@ -75,11 +75,15 @@
if (!size_out || !filename) {
return 0;
}
-
+ const char kTarMagic[] = "ustar";
tar_header tar;
size_t cursor = start_cursor;
CHECK_DIF_OK(spi_flash_read_page(cursor, (uint8_t*)&tar));
while (cursor < kSpiFlashBytes) {
+ // Check the tar header magic field to validate the header info.
+ if (memcmp((const char*)&tar.magic, kTarMagic, str_size(kTarMagic)) != 0) {
+ break;
+ }
int size = parse_octal((uint8_t*)&tar.size);
cursor += 512;
const char* tar_name = (const char*)&tar.name;