[PATCH] kexec: Fix snprintf related compilation warnings
Simon Horman
horms at verge.net.au
Tue Sep 29 12:21:01 EDT 2020
On Wed, Sep 23, 2020 at 04:42:37PM +0530, Bhupesh Sharma wrote:
> This patch fixes the following snprintf related compilation warning
> seen currently with gcc versions 7 and 8 when kexec is compiled with
> -Wformat-truncation option:
>
> kexec/fs2dt.c:673:34: warning: ‘stdout-path’ directive output may be truncated writing 11 bytes into a region of size between 1 and 1024 [-Wformat-truncation=]
> snprintf(filename, MAXPATH, "%sstdout-path", pathname);
> ^~~~~~~~~~~
> kexec/fs2dt.c:673:3: note: ‘snprintf’ output between 12 and 1035 bytes into a destination of size 1024
> snprintf(filename, MAXPATH, "%sstdout-path", pathname);
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> kexec/fs2dt.c:676:35: warning: ‘linux,stdout-path’ directive output may be truncated writing 17 bytes into a region of size between 1 and 1024 [-Wformat-truncation=]
> snprintf(filename, MAXPATH, "%slinux,stdout-path", pathname);
> ^~~~~~~~~~~~~~~~~
> kexec/fs2dt.c:676:4: note: ‘snprintf’ output between 18 and 1041 bytes into a destination of size 1024
> snprintf(filename, MAXPATH, "%slinux,stdout-path", pathname);
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> kexec/firmware_memmap.c:132:35: warning: ‘%s’ directive output may be truncated writing 5 bytes into a region of size between 0 and 4095 [-Wformat-truncation=]
> snprintf(filename, PATH_MAX, "%s/%s", entry, "start");
> ^~ ~~~~~~~
> kexec/firmware_memmap.c:132:2: note: ‘snprintf’ output between 7 and 4102 bytes into a destination of size 4096
> snprintf(filename, PATH_MAX, "%s/%s", entry, "start");
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> kexec/firmware_memmap.c:142:35: warning: ‘%s’ directive output may be truncated writing 3 bytes into a region of size between 0 and 4095 [-Wformat-truncation=]
> snprintf(filename, PATH_MAX, "%s/%s", entry, "end");
> ^~ ~~~~~
> kexec/firmware_memmap.c:142:2: note: ‘snprintf’ output between 5 and 4100 bytes into a destination of size 4096
> snprintf(filename, PATH_MAX, "%s/%s", entry, "end");
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> kexec/firmware_memmap.c:152:35: warning: ‘%s’ directive output may be truncated writing 4 bytes into a region of size between 0 and 4095 [-Wformat-truncation=]
> snprintf(filename, PATH_MAX, "%s/%s", entry, "type");
> ^~ ~~~~~~
> kexec/firmware_memmap.c:152:2: note: ‘snprintf’ output between 6 and 4101 bytes into a destination of size 4096
> snprintf(filename, PATH_MAX, "%s/%s", entry, "type");
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> Since the simplest method to address the gcc warnings and possible
> truncation would be to check the return value provided from snprintf
> (well there are other methods like using 'asnprintf' or using
> 'open_memstream' function to create the FILE object, but these are more
> intrusive), so this patch does the same.
>
> Cc: Simon Horman <horms at verge.net.au>
> Cc: Eric Biederman <ebiederm at xmission.com>
> Cc: kexec at lists.infradead.org
> Signed-off-by: Bhupesh Sharma <bhsharma at redhat.com>
Thanks, applied.
More information about the kexec
mailing list