tools: mtk_image: replace strncpy(d, s, sizeof(d)) with snprintf()
PATCH 1/1 tools: mtk_image: replace strncpy(d, s, sizeof(d)) with snprintf()
Starting from version 8 the GCC, i.e. C compiler, starts complaining about possible '\0' terminator loss or, as in this case, garbage copy.
In function ‘mtk_image_set_gen_header’,
inlined from ‘mtk_image_set_header’ at tools/mtk_image.c:733:3:tools/mtk_image.c:659:2: warning: ‘strncpy’ specified bound 12 equals destination size [-Wstringop-truncation]
strncpy(hdr->boot.name, bootname, sizeof(hdr->boot.name)); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In function ‘mtk_brom_parse_imagename’,
inlined from ‘mtk_image_check_params’ at tools/mtk_image.c:388:9:tools/mtk_image.c:325:5: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
strncpy(lk_name, val, sizeof(lk_name));
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Replace it with snprintf() to tell compiler how much room we have in the destination buffer for source string.
--- tools/mtk_image.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
tools/mtk_image.c +2 -2
@@ -322,7 +322,7 @@ static int mtk_brom_parse_imagename(const char *imagename) lk = val;if (!strcmp (key,"lkname" )) -strncpy (lk_name, val,sizeof (lk_name)); +snprintf (lk_name,sizeof (lk_name),"%s" , val); }if (next)
@@ -656,7 +656,7 @@ static void mtk_image_set_gen_header(void *ptr, off_t filesize, bootname =SDMMC_BOOT_NAME ;/* Generic device header */ -strncpy (hdr->boot.name, bootname,sizeof (hdr->boot.name)); +snprintf (hdr->boot.name,sizeof (hdr->boot.name),"%s" , bootname); hdr->boot.version =cpu_to_le32 (1 ); hdr->boot.size =cpu_to_le32 (sizeof (hdr->boot));
Signature · 1 line
2.19.2
PATCH 1/1 tools: mtk_image: replace strncpy(d, s, sizeof(d)) with snprintf()
Quoted 39 lines · Andy Shevchenko
Starting from version 8 the GCC, i.e. C compiler, starts complaining about possible '\0' terminator loss or, as in this case, garbage copy.
In function ‘mtk_image_set_gen_header’,
inlined from ‘mtk_image_set_header’ attools/mtk_image.c:733:3:tools/mtk_image.c:659:2: warning: ‘strncpy’ specified bound 12 equals destination size [-Wstringop-truncation]
strncpy(hdr->boot.name, bootname, sizeof(hdr->boot.name)); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In function ‘mtk_brom_parse_imagename’,
inlined from ‘mtk_image_check_params’ attools/mtk_image.c:388:9:tools/mtk_image.c:325:5: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]strncpy(lk_name, val, sizeof(lk_name)); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Replace it with
snprintf()to tell compiler how much room we have in the destination buffer for source string.Fixes 3b975a147c3c ("tools: MediaTek: add MTK boot header generation to mkimage")Cc Ryder Lee <[email protected]>Cc Weijie Gao <[email protected]>Signed-off-by Andy Shevchenko <[email protected]>--- tools/mtk_image.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)tools/mtk_image.c +1
-1@@ -322,7 +322,7 @@ static int mtk_brom_parse_imagename(const char *imagename) lk = val;if (!strcmp (key,"lkname" )) -strncpy (lk_name, val,sizeof (lk_name)); +snprintf (lk_name,sizeof (lk_name),"%s" , val); }if (next)
tools/mtk_image.c static void mtk_image_set_gen_header(void *ptr, off_t filesize, · line 662
Quoted 8 lines
tools/mtk_image.c +1
-1@@ -656,7 +656,7 @@ static void mtk_image_set_gen_header(void *ptr, off_t filesize, bootname =SDMMC_BOOT_NAME ;/* Generic device header */ -strncpy (hdr->boot.name, bootname,sizeof (hdr->boot.name)); +snprintf (hdr->boot.name,sizeof (hdr->boot.name),"%s" , bootname); hdr->boot.version =cpu_to_le32 (1 ); hdr->boot.size =cpu_to_le32 (sizeof (hdr->boot));
Hi Andy,
The snprintf adds a NULL char at the end of the string which gives only 31 available bytes for the lk name filed. But it's OK for this because almost no one would like to give a name to fill the whole field. The same applies to the device header.
Best Regards,
Weijie
PATCH 1/1 tools: mtk_image: replace strncpy(d, s, sizeof(d)) with snprintf()
In reply to Andy ShevchenkoQuoted 14 lines · Andy Shevchenko
Starting from version 8 the GCC, i.e. C compiler, starts complaining about possible '\0' terminator loss or, as in this case, garbage copy.
In function ‘mtk_image_set_gen_header’,
inlined from ‘mtk_image_set_header’ attools/mtk_image.c:733:3:tools/mtk_image.c:659:2: warning: ‘strncpy’ specified bound 12 equals destination size [-Wstringop-truncation]
strncpy(hdr->boot.name, bootname, sizeof(hdr->boot.name)); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In function ‘mtk_brom_parse_imagename’,
inlined from ‘mtk_image_check_params’ attools/mtk_image.c:388:9:tools/mtk_image.c:325:5: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]strncpy(lk_name, val, sizeof(lk_name)); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Quoted 8 lines
Replace it with
snprintf()to tell compiler how much room we have in the destination buffer for source string.Fixes 3b975a147c3c ("tools: MediaTek: add MTK boot header generation to mkimage")Cc Ryder Lee <[email protected]>Cc Weijie Gao <[email protected]>Signed-off-by Andy Shevchenko <[email protected]>Reviewed-by Weijie Gao <[email protected]>
Applied to u-boot/master, thanks!
Signature · 8 lines
Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 819 bytes Desc: not available URL: <http://lists.denx.de/pipermail/u-boot/attachments/20181217/b7767982/attachment.sig>