diff --git a/dmenu.c b/dmenu.c index 2c64545..07ab089 100644 --- a/dmenu.c +++ b/dmenu.c @@ -1,6 +1,7 @@ /* See LICENSE file for copyright and license details. */ #include #include +#include #include #include #include @@ -556,6 +557,8 @@ readstdin(void) for (i = 0; (len = getline(&line, &linesiz, stdin)) != -1; i++) { if (i + 1 >= itemsiz) { itemsiz += 256; + if (itemsiz > SIZE_MAX / sizeof(*items)) + die("too many items"); if (!(items = realloc(items, itemsiz * sizeof(*items)))) die("cannot realloc %zu bytes:", itemsiz * sizeof(*items)); }