#include "proc/devname.h"
#include "proc/sysinfo.h"
+#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 + 4; \
+} while (0)
+
static int i_am_pkill = 0;
struct el {
do {
if (i == size) {
- size = size * 5 / 4 + 4;
+ grow_size(size);
/* add 1 because slot zero is a count */
list = xrealloc (list, (1 + size) * sizeof *list);
}
matches = 0;
}
if (matches == size) {
- size = size * 5 / 4 + 4;
+ grow_size(size);
list = xrealloc(list, size * sizeof *list);
}
if (list && (opt_long || opt_longlong || opt_echo)) {
// eventually grow output buffer
if (matches == size) {
- size = size * 5 / 4 + 4;
- list = realloc(list, size * sizeof *list);
- if (list == NULL)
- exit (EXIT_FATAL);
+ grow_size(size);
+ list = xrealloc(list, size * sizeof *list);
}
if (opt_long || opt_longlong) {
list[matches].str = xstrdup (cmdoutput);