block: aoe: Use scnprintf() for avoiding potential buffer overflow
authorTakashi Iwai <tiwai@suse.de>
Wed, 11 Mar 2020 07:12:58 +0000 (08:12 +0100)
committerJens Axboe <axboe@kernel.dk>
Thu, 12 Mar 2020 13:39:04 +0000 (07:39 -0600)
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: Jens Axboe <axboe@kernel.dk>
drivers/block/aoe/aoeblk.c

index 7b32fb6733758f4f3dbfc40fcabb04321ccd0545..a27804d71e122970af4f99be85e4d2850e3782e8 100644 (file)
@@ -87,9 +87,9 @@ static ssize_t aoedisk_show_netif(struct device *dev,
        if (*nd == NULL)
                return snprintf(page, PAGE_SIZE, "none\n");
        for (p = page; nd < ne; nd++)
-               p += snprintf(p, PAGE_SIZE - (p-page), "%s%s",
+               p += scnprintf(p, PAGE_SIZE - (p-page), "%s%s",
                        p == page ? "" : ",", (*nd)->name);
-       p += snprintf(p, PAGE_SIZE - (p-page), "\n");
+       p += scnprintf(p, PAGE_SIZE - (p-page), "\n");
        return p-page;
 }
 /* firmware version */