]> git.ipfire.org Git - thirdparty/kmod.git/commitdiff
depmod: Fix writing over array length
authorLucas De Marchi <lucas.de.marchi@gmail.com>
Fri, 3 Jun 2022 20:49:01 +0000 (13:49 -0700)
committerLucas De Marchi <lucas.de.marchi@gmail.com>
Mon, 27 Jun 2022 06:21:44 +0000 (23:21 -0700)
Make sure return value in flush_stream_to() is the length written
if the value didn't the size. Fix warning on gcc 12.1:

tools/depmod.c: In function ‘output_builtin_alias_bin’:
tools/depmod.c:2465:24: warning: array subscript 4096 is above array bounds of ‘char[4096]’ [-Warray-bounds]
 2465 |                 modname[len] = '\0';
      |                 ~~~~~~~^~~~~
tools/depmod.c:2460:22: note: while referencing ‘modname’
 2460 |                 char modname[PATH_MAX];
      |                      ^~~~~~~
tools/depmod.c:2477:22: warning: array subscript 4096 is above array bounds of ‘char[4096]’ [-Warray-bounds]
 2477 |                 value[len] = '\0';
      |                 ~~~~~^~~~~
tools/depmod.c:2461:22: note: while referencing ‘value’
 2461 |                 char value[PATH_MAX];
      |                      ^~~~~

Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
tools/depmod.c

index 4117dd1903777f877430b85c5f89813af6bd7fdf..364b7d4faa9e8939f6f5e9bb70b0cd00f6cfe0d8 100644 (file)
@@ -2430,6 +2430,7 @@ static int flush_stream_to(FILE *in, int endchar, char *dst, size_t dst_sz)
        if (i == dst_sz) {
                WRN("Could not flush stream: %d. Partial content: %.*s\n",
                    ENOSPC, (int) dst_sz, dst);
+               i--;
        }
 
        return c == endchar ? i : 0;