summaryrefslogtreecommitdiff
path: root/board/servo_v4
diff options
context:
space:
mode:
authorShawn Nematbakhsh <shawnn@chromium.org>2017-10-31 17:30:17 -0700
committerchrome-bot <chrome-bot@chromium.org>2017-11-02 00:13:00 -0700
commit0deaaaa00302252c34f7c40bc6cf9aff13d5b9e8 (patch)
treef7f822dc196a95082634fcb7d722dd91c7204b0a /board/servo_v4
parent5ed0c143b3cf8094640615971c9d09afa19c117f (diff)
downloadchrome-ec-0deaaaa00302252c34f7c40bc6cf9aff13d5b9e8.tar.gz
servo_v4: Fix buffer overflow
src_pdo_charge[] size may exceed 2, but remove it instead. BUG=None TEST=On servo_v4, verify DTS always works. BRANCH=servo Signed-off-by: Shawn Nematbakhsh <shawnn@chromium.org> Change-Id: I2a4e75a5939cab82d508408b961361bde9f207ea Reviewed-on: https://chromium-review.googlesource.com/748272 Commit-Ready: Shawn N <shawnn@chromium.org> Tested-by: Shawn N <shawnn@chromium.org> Reviewed-by: Scott Collyer <scollyer@chromium.org>
Diffstat (limited to 'board/servo_v4')
-rw-r--r--board/servo_v4/usb_pd_policy.c10
1 files changed, 3 insertions, 7 deletions
diff --git a/board/servo_v4/usb_pd_policy.c b/board/servo_v4/usb_pd_policy.c
index fa1e4c4341..0608060ad9 100644
--- a/board/servo_v4/usb_pd_policy.c
+++ b/board/servo_v4/usb_pd_policy.c
@@ -59,7 +59,6 @@ struct vbus_prop {
int ma;
};
static struct vbus_prop vbus[CONFIG_USB_PD_PORT_COUNT];
-static struct vbus_prop src_pdo_charge[2];
static int active_charge_port = CHARGE_PORT_NONE;
static enum charge_supplier active_charge_supplier;
static uint8_t vbus_rp = TYPEC_RP_RESERVED;
@@ -177,13 +176,11 @@ static void update_ports(void)
snk_index = pdo_index;
pd_extract_pdo_power(pdo, &max_ma, &max_mv);
- pd_src_chg_pdo[src_index] =
+ pd_src_chg_pdo[src_index++] =
PDO_FIXED_VOLT(max_mv) |
PDO_FIXED_CURR(max_ma) |
DUT_PDO_FIXED_FLAGS |
PDO_FIXED_EXTERNAL;
- src_pdo_charge[src_index].mv = max_mv;
- src_pdo_charge[src_index++].ma = max_ma;
}
chg_pdo_cnt = src_index;
} else {
@@ -192,8 +189,6 @@ static void update_ports(void)
PDO_FIXED_CURR(vbus[CHG].ma) |
DUT_PDO_FIXED_FLAGS |
PDO_FIXED_EXTERNAL;
- src_pdo_charge[0].mv = PD_MIN_MV;
- src_pdo_charge[0].ma = vbus[CHG].ma;
chg_pdo_cnt = 1;
}
@@ -430,8 +425,9 @@ int pd_is_valid_input_voltage(int mv)
void pd_transition_voltage(int idx)
{
timestamp_t deadline;
- uint32_t mv = src_pdo_charge[idx - 1].mv;
+ uint32_t ma, mv;
+ pd_extract_pdo_power(pd_src_chg_pdo[idx - 1], &ma, &mv);
/* Is this a transition to a new voltage? */
if (charge_port_is_active() && vbus[CHG].mv != mv) {
/*