From ee3fc499cd03e06bba5da0372e0d47ca3ff6ee90 Mon Sep 17 00:00:00 2001 From: CTCaer Date: Sat, 11 Feb 2023 22:40:47 +0200 Subject: [PATCH] bdk: bm92t36: add sanity checks If bm92t i2c comms are broken, it can hang hekate. So sanitize buffer and max profile print supported. --- bdk/power/bm92t36.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/bdk/power/bm92t36.c b/bdk/power/bm92t36.c index d1496f7..8f213f5 100644 --- a/bdk/power/bm92t36.c +++ b/bdk/power/bm92t36.c @@ -73,18 +73,23 @@ void bm92t36_get_sink_info(bool *inserted, usb_pd_objects_t *usb_pd) if (inserted) { + memset(buf, 0, sizeof(buf)); _bm92t36_read_reg(buf, 2, STATUS1_REG); *inserted = buf[0] & STATUS1_INSERT ? true : false; } if (usb_pd) { + memset(buf, 0, sizeof(buf)); _bm92t36_read_reg(buf, 29, READ_PDOS_SRC_REG); memcpy(pdos, &buf[1], 28); memset(usb_pd, 0, sizeof(usb_pd_objects_t)); usb_pd->pdo_no = buf[0] / sizeof(pd_object_t); + if (usb_pd->pdo_no > 7) + usb_pd->pdo_no = 7; + for (u32 i = 0; i < usb_pd->pdo_no; i++) { usb_pd->pdos[i].amperage = pdos[i].amp * 10;