| From 8bfe15f3de0af92fd822b7475878bddc93fa490d Mon Sep 17 00:00:00 2001 |
| From: Mike Lockwood <lockwood@android.com> |
| Date: Sat, 17 Apr 2010 12:01:35 -0400 |
| Subject: Staging: android: timed_gpio: Properly discard invalid |
| timeout values. |
| Patch-mainline: HEAD |
| Git-commit: 8bfe15f3de0af92fd822b7475878bddc93fa490d |
| |
| The timed output device never previously checked the return value of sscanf, |
| resulting in an uninitialized int being passed to enable() if input value |
| was invalid. |
| |
| Signed-off-by: Mike Lockwood <lockwood@android.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| diff --git a/drivers/staging/android/timed_output.c b/drivers/staging/android/timed_output.c |
| index 62e7918..f373422 100644 |
| --- a/drivers/staging/android/timed_output.c |
| +++ b/drivers/staging/android/timed_output.c |
| @@ -41,7 +41,9 @@ static ssize_t enable_store( |
| struct timed_output_dev *tdev = dev_get_drvdata(dev); |
| int value; |
| |
| - sscanf(buf, "%d", &value); |
| + if (sscanf(buf, "%d", &value) != 1) |
| + return -EINVAL; |
| + |
| tdev->enable(tdev, value); |
| |
| return size; |