diff options
author | Jett Rink <jettrink@chromium.org> | 2020-11-10 16:50:01 -0700 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-11-11 17:00:44 +0000 |
commit | bcfcf0a1aaa09a3b9cba98b87887901c98c6cff1 (patch) | |
tree | 6690b2416a8d28016c7c6ac6e2620ccd21987694 | |
parent | a418c258495274e04778d6d62187bb5ddcec2e7d (diff) | |
download | chrome-ec-bcfcf0a1aaa09a3b9cba98b87887901c98c6cff1.tar.gz |
zephyr/gpio: add bound checks to all gpio functions
The static check for zephyr will generate warnings if we
do not bounds check the incoming gpio_signal enum. We should
bounds check anyway.
BRANCH=none
BUG=b:172512307
TEST=build posix-ec with CL stack
Signed-off-by: Jett Rink <jettrink@chromium.org>
Change-Id: I1b2014c02e02d7271eeabd3cc041b3c452b1c43f
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2530151
Reviewed-by: Jack Rosenthal <jrosenth@chromium.org>
-rw-r--r-- | zephyr/shim/src/gpio.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/zephyr/shim/src/gpio.c b/zephyr/shim/src/gpio.c index 0b74e44234..89f9a53451 100644 --- a/zephyr/shim/src/gpio.c +++ b/zephyr/shim/src/gpio.c @@ -123,6 +123,9 @@ int gpio_is_implemented(enum gpio_signal signal) int gpio_get_level(enum gpio_signal signal) { + if (signal >= ARRAY_SIZE(configs)) + return 0; + const int l = gpio_pin_get_raw(data[signal].dev, configs[signal].pin); if (l < 0) { @@ -134,11 +137,17 @@ int gpio_get_level(enum gpio_signal signal) const char *gpio_get_name(enum gpio_signal signal) { + if (signal >= ARRAY_SIZE(configs)) + return ""; + return configs[signal].name; } void gpio_set_level(enum gpio_signal signal, int value) { + if (signal >= ARRAY_SIZE(configs)) + return; + int rv = gpio_pin_set_raw(data[signal].dev, configs[signal].pin, value); if (rv < 0) { @@ -249,6 +258,9 @@ int gpio_disable_interrupt(enum gpio_signal signal) { int rv; + if (signal >= ARRAY_SIZE(configs)) + return -1; + rv = gpio_pin_interrupt_configure(data[signal].dev, configs[signal].pin, GPIO_INT_DISABLE); if (rv < 0) { |