summaryrefslogtreecommitdiffstats
path: root/drivers/power
diff options
context:
space:
mode:
authorSasha Levin <sasha.levin@oracle.com>2015-12-22 12:43:36 -0500
committerSebastian Reichel <sre@kernel.org>2016-01-07 18:39:34 +0100
commit6b9140f39c2aaf76791197fbab0839c0e4af56e8 (patch)
tree0d8362c26a0c895f0b7f463ecba6a98806e2fe69 /drivers/power
parent127d2868484b9769e08a8353e9e43023dcb8b9b3 (diff)
downloadlinux-6b9140f39c2aaf76791197fbab0839c0e4af56e8.tar.bz2
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>
Diffstat (limited to 'drivers/power')
-rw-r--r--drivers/power/test_power.c2
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,
buf[MAX_KEYLENGTH-1] = '\0';
cr = strnlen(buf, MAX_KEYLENGTH) - 1;
+ if (cr < 0)
+ return def_val;
if (buf[cr] == '\n')
buf[cr] = '\0';