diff --git a/pidof.c b/pidof.c index c65aaadb..c4288115 100644 --- a/pidof.c +++ b/pidof.c @@ -21,6 +21,7 @@ #include #include #include +#include #include #include "c.h" @@ -30,7 +31,12 @@ #include -#define grow_size(x) (x = x * 5 / 4 + 1024) +#define grow_size(x) do { \ + if ((x) < 0 || (size_t)(x) >= INT_MAX / 5 / sizeof(struct el)) \ + xerrx(EXIT_FAILURE, _("integer overflow")); \ + (x) = (x) * 5 / 4 + 1024; \ +} while (0) + #define safe_free(x) if (x) { free(x); x=NULL; }