OSDN Git Service

media: rc: Use scnprintf() for avoiding potential buffer overflow
authorTakashi Iwai <tiwai@suse.de>
Wed, 11 Mar 2020 07:47:06 +0000 (08:47 +0100)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Fri, 20 Mar 2020 15:27:42 +0000 (16:27 +0100)
Since snprintf() returns the would-be-output size instead of the
actual output size, the succeeding calls may go beyond the given
buffer limit.  Fix it by replacing with scnprintf().

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Sean Young <sean@mess.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
drivers/media/rc/nuvoton-cir.c

index 5c2cd8d..48a69bf 100644 (file)
@@ -230,10 +230,10 @@ static ssize_t wakeup_data_show(struct device *dev,
        for (i = 0; i < fifo_len; i++) {
                duration = nvt_cir_wake_reg_read(nvt, CIR_WAKE_RD_FIFO_ONLY);
                duration = (duration & BUF_LEN_MASK) * SAMPLE_PERIOD;
-               buf_len += snprintf(buf + buf_len, PAGE_SIZE - buf_len,
+               buf_len += scnprintf(buf + buf_len, PAGE_SIZE - buf_len,
                                    "%d ", duration);
        }
-       buf_len += snprintf(buf + buf_len, PAGE_SIZE - buf_len, "\n");
+       buf_len += scnprintf(buf + buf_len, PAGE_SIZE - buf_len, "\n");
 
        spin_unlock_irqrestore(&nvt->lock, flags);