leds: pattern trigger -- check pattern for validity
authorPavel Machek <pavel@ucw.cz>
Fri, 24 Jul 2020 10:43:47 +0000 (12:43 +0200)
committerPavel Machek <pavel@ucw.cz>
Fri, 24 Jul 2020 10:43:57 +0000 (12:43 +0200)
Don't allow invalid brightness in the pattern.

Signed-off-by: Pavel Machek <pavel@ucw.cz>
drivers/leds/trigger/ledtrig-pattern.c

index 3abcafe..4d138d5 100644 (file)
@@ -227,10 +227,12 @@ static int pattern_trig_store_patterns_string(struct pattern_trig_data *data,
 
        while (offset < count - 1 && data->npatterns < MAX_PATTERNS) {
                cr = 0;
-               ccount = sscanf(buf + offset, "%d %u %n",
+               ccount = sscanf(buf + offset, "%u %u %n",
                                &data->patterns[data->npatterns].brightness,
                                &data->patterns[data->npatterns].delta_t, &cr);
-               if (ccount != 2) {
+
+               if (ccount != 2 ||
+                   data->patterns[data->npatterns].brightness > data->led_cdev->max_brightness) {
                        data->npatterns = 0;
                        return -EINVAL;
                }