diff options
author | Sasha Levin <sasha.levin@oracle.com> | 2015-12-22 12:43:36 -0500 |
---|---|---|
committer | Sebastian Reichel <sre@kernel.org> | 2016-01-07 12:39:34 -0500 |
commit | 6b9140f39c2aaf76791197fbab0839c0e4af56e8 (patch) | |
tree | 0d8362c26a0c895f0b7f463ecba6a98806e2fe69 | |
parent | 127d2868484b9769e08a8353e9e43023dcb8b9b3 (diff) |
power: test_power: correctly handle empty writes
Writing 0 length data into test_power makes it access an invalid array
location and kill the system.
Fixes: f17ef9b2d ("power: Make test_power driver more dynamic.")
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
Signed-off-by: Sebastian Reichel <sre@kernel.org>
-rw-r--r-- | drivers/power/test_power.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/power/test_power.c b/drivers/power/test_power.c index 83c42ea88f2b..57246cdbd042 100644 --- a/drivers/power/test_power.c +++ b/drivers/power/test_power.c | |||
@@ -301,6 +301,8 @@ static int map_get_value(struct battery_property_map *map, const char *key, | |||
301 | buf[MAX_KEYLENGTH-1] = '\0'; | 301 | buf[MAX_KEYLENGTH-1] = '\0'; |
302 | 302 | ||
303 | cr = strnlen(buf, MAX_KEYLENGTH) - 1; | 303 | cr = strnlen(buf, MAX_KEYLENGTH) - 1; |
304 | if (cr < 0) | ||
305 | return def_val; | ||
304 | if (buf[cr] == '\n') | 306 | if (buf[cr] == '\n') |
305 | buf[cr] = '\0'; | 307 | buf[cr] = '\0'; |
306 | 308 | ||