From acbcd7d7005baa17b888bd27df570171c3e2a51b Mon Sep 17 00:00:00 2001 From: Mark Wooding Date: Thu, 13 May 2021 16:24:32 +0100 Subject: [PATCH] lib.c: Don't try pointer arithmetic on void pointers. Here, `av->o' is a count of array slots, not bytes, so this is wrong: rewrite to use the correct kind of pointer. Fortunately, nothing actually uses this machinery. It's honestly a bit vexing that GCC lets me get away with this. Spotted by Coverity. --- lib.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib.c b/lib.c index edb6e33..0d618f6 100644 --- a/lib.c +++ b/lib.c @@ -267,7 +267,7 @@ void argv_ensure(struct argv *av, size_t n) if (need <= av->sz) return; newsz = av->sz ? 2*av->sz : 8; while (newsz < need) newsz *= 2; - av->v = xrealloc(av->v - av->o, newsz*sizeof(char *)) + av->o; + av->v = xrealloc(av->v - av->o, newsz*sizeof(char *)); av->v += av->o; av->sz = newsz; } -- 2.11.0