)]}'
{
  "commit": "dd38e912b39166975ed13e46602d8a5b2a6e85f4",
  "tree": "17d9606f7099c908717ea66cbb942dc852bc9f2b",
  "parents": [
    "341fc8dad682d828e63671b76ee4e4d71bc39a07"
  ],
  "author": {
    "name": "Yu-Ping Wu",
    "email": "yupingso@google.com",
    "time": "Wed Sep 16 10:50:46 2026 +0800"
  },
  "committer": {
    "name": "chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "email": "chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Wed Sep 23 13:58:07 2026 -0700"
  },
  "message": "crossystem: Reject invalid characters in string properties\n\nFirmware property strings (e.g. fwid, ro_fwid, hwid) read from FDT or\nACPI can contain arbitrary characters if an attacker modified the\nunderlying flash sections (e.g. RW_FWID). On ARM, ReadFdtBlock reads\nthe full node without checking for newlines or non-printable\ncharacters. Embedded newlines in crossystem stdout can forge separate\nkey-value lines when scraped by tools such as StatisticsProvider.\n\nIntroduce is_valid_property_string() in host_misc to ensure property\nstrings only contain printable ASCII characters (0x20..0x7E) and do not\ncontain \u0027\u003d\u0027, \u0027\\\\\u0027, \u0027\\\u0027\u0027, or \u0027\"\u0027. Return error when invalid characters\nare detected in ReadFdtString, ReadAcpiSysfsString, or hwid-override.\n\nBUG\u003db:557502272\nTEST\u003dmake rununittests\nBRANCH\u003dnone\nTAG\u003dagy\nCONV\u003dad09cbc3-349f-43e7-abdd-ab8c2ee7b9ca\n\nChange-Id: I96536cd78c06ecc93c632b4f8a8504146a6a6964\nSigned-off-by: Yu-Ping Wu \u003cyupingso@google.com\u003e\nReviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/8412966\nReviewed-by: Julius Werner \u003cjwerner@chromium.org\u003e\nAuto-Submit: Yu-Ping Wu \u003cyupingso@chromium.org\u003e\nCommit-Queue: Julius Werner \u003cjwerner@chromium.org\u003e\nTested-by: Yu-Ping Wu \u003cyupingso@chromium.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "39ed369c90041089358e9fbd285dff84d10c5df6",
      "old_mode": 33188,
      "old_path": "host/arch/arm/lib/crossystem_arch.c",
      "new_id": "8635c096eb4056aa1c6256fdd517c0a366fc16e4",
      "new_mode": 33188,
      "new_path": "host/arch/arm/lib/crossystem_arch.c"
    },
    {
      "type": "modify",
      "old_id": "f7010985db1b01c7333845cd849cfef2ce003947",
      "old_mode": 33188,
      "old_path": "host/arch/x86/lib/crossystem_arch.c",
      "new_id": "8fbf5e10f7718820701800829991247e7c224325",
      "new_mode": 33188,
      "new_path": "host/arch/x86/lib/crossystem_arch.c"
    },
    {
      "type": "modify",
      "old_id": "4fb5933bf5df55b23c77cbd2e7f07463dd6af830",
      "old_mode": 33188,
      "old_path": "host/lib/crossystem.c",
      "new_id": "6bcc7581c535a1b1adcf5b158d5e44b235caa9d2",
      "new_mode": 33188,
      "new_path": "host/lib/crossystem.c"
    },
    {
      "type": "modify",
      "old_id": "beddf721ca6c340739711bdce9e356f383418714",
      "old_mode": 33188,
      "old_path": "host/lib/host_misc.c",
      "new_id": "0854eb708ff5c39e201f1d116226f5ec1a968d02",
      "new_mode": 33188,
      "new_path": "host/lib/host_misc.c"
    },
    {
      "type": "modify",
      "old_id": "de1f02514bc245fc186c58f54317dc2883667011",
      "old_mode": 33188,
      "old_path": "host/lib/include/host_misc.h",
      "new_id": "126948e0ef66803e8eea23304206a759ce06406c",
      "new_mode": 33188,
      "new_path": "host/lib/include/host_misc.h"
    },
    {
      "type": "modify",
      "old_id": "45b8d1ed61b14ff8869ab1e543af4342fa746de2",
      "old_mode": 33188,
      "old_path": "tests/vb21_host_misc_tests.c",
      "new_id": "1b2a4367a3ea778336459db26af344d04c5c2dd0",
      "new_mode": 33188,
      "new_path": "tests/vb21_host_misc_tests.c"
    }
  ]
}
