led: fix coverity scan error
authorHeiko Schocher <hs@denx.de>
Wed, 12 Feb 2025 09:10:55 +0000 (10:10 +0100)
committerTom Rini <trini@konsulko.com>
Tue, 18 Feb 2025 18:30:53 +0000 (12:30 -0600)
The following was reported by Covervity scan:

*** CID 541279:    (TAINTED_SCALAR)
/drivers/led/led-uclass.c: 284 in led_get_function_name()
278                     if (!ret) {
279                             snprintf(uc_plat->name, LED_MAX_NAME_SIZE,
280                                      "%s:%s-%d",
281                                      cp ? "" : led_colors[color],
282                                      func ? func : "", enumerator);
283                     } else {
>>>     CID 541279:    (TAINTED_SCALAR)
>>>     Using tainted variable "color" as an index into an array "led_colors".

Fix it.
Addresses-Coverity-ID: 541279 (TAINTED_SCALAR)
Link: https://lists.denx.de/pipermail/u-boot/2025-February/580250.html
Signed-off-by: Heiko Schocher <hs@denx.de>
drivers/led/led-uclass.c

index 27ef890..22f61d1 100644 (file)
@@ -273,6 +273,10 @@ static const char *led_get_function_name(struct udevice *dev)
        /* Now try to detect function label name */
        func = dev_read_string(dev, "function");
        cp = dev_read_u32(dev, "color", &color);
+       // prevent coverity scan error CID 541279: (TAINTED_SCALAR)
+       if (color < LED_COLOR_ID_WHITE || color >= LED_COLOR_ID_MAX)
+               cp = -EINVAL;
+
        if (cp == 0 || func) {
                ret = dev_read_u32(dev, "function-enumerator", &enumerator);
                if (!ret) {