diff options
author | Inno.Park <ih.yoo.park@samsung.corp-partner.google.com> | 2020-10-13 15:17:13 +0900 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-10-15 03:07:08 +0000 |
commit | 8ce0f7fe36fa834fff88931dee135e1e122ed341 (patch) | |
tree | 9bd7a88121d60bfd347ea07db9e69b1b2beac825 | |
parent | 7717bd8f6a9e309b352d4e9ee73b66463e0a5b2e (diff) | |
download | chrome-ec-8ce0f7fe36fa834fff88931dee135e1e122ed341.tar.gz |
driver: lis2ds: set up the minimum value for set_range
Current lis2ds driver is vulnerable to unrestrained input for range
setting. The system gets rebooted as setting a range to 0 or negative.
This CL set up minimum range in set_range() to filter input 0 or below.
BUG=b:170688359
BRANCH=none
TEST=run 'ectool motionsense range 0 0' and check if device rebooted
Signed-off-by: Inno.Park <ih.yoo.park@samsung.corp-partner.google.com>
Change-Id: I24e68635584ecddab415df8d7af0250a62f28d40
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2467416
Reviewed-by: Yuval Peress <peress@chromium.org>
(cherry picked from commit 95e90b8132568e3872137d8649168816c8ece46a)
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2473619
Reviewed-by: Bob Moragues <moragues@chromium.org>
Commit-Queue: Bob Moragues <moragues@chromium.org>
-rw-r--r-- | driver/accel_lis2ds.c | 2 | ||||
-rw-r--r-- | driver/accel_lis2ds.h | 1 |
2 files changed, 3 insertions, 0 deletions
diff --git a/driver/accel_lis2ds.c b/driver/accel_lis2ds.c index a055d533b9..c064cba03c 100644 --- a/driver/accel_lis2ds.c +++ b/driver/accel_lis2ds.c @@ -190,6 +190,8 @@ static int set_range(const struct motion_sensor_t *s, int range, int rnd) if (newrange > LIS2DS_ACCEL_FS_MAX_VAL) newrange = LIS2DS_ACCEL_FS_MAX_VAL; + else if (newrange < LIS2DS_ACCEL_FS_MIN_VAL) + newrange = LIS2DS_ACCEL_FS_MIN_VAL; reg_val = LIS2DS_FS_REG(newrange); diff --git a/driver/accel_lis2ds.h b/driver/accel_lis2ds.h index b8e7f544f4..e25bc5954f 100644 --- a/driver/accel_lis2ds.h +++ b/driver/accel_lis2ds.h @@ -143,6 +143,7 @@ enum lis2ds_fs { }; #define LIS2DS_ACCEL_FS_MAX_VAL 16 +#define LIS2DS_ACCEL_FS_MIN_VAL 2 /* Reg value from Full Scale */ #define LIS2DS_FS_REG(_fs) \ |