[parted-devel] [PATCH 3/7] libparted: Fix warnings from GCC 8 -Wunused-variable and -Warray-bounds

Shin'ichiro Kawasaki kawasaki at juno.dti.ne.jp
Wed Aug 14 02:59:19 BST 2019


GCC 8 reports two warnings as follows.

r/fat/bootsector.c: In function 'fat_boot_sector_set_boot_code':
r/fat/bootsector.c:274:15: warning: unused variable 'fs_info' [-Wunused-variable]
  FatSpecific* fs_info = FAT_SPECIFIC (fs);
               ^~~~~~~
In function 'memcpy',
    inlined from 'fat_boot_sector_set_boot_code' at r/fat/bootsector.c:283:2:
/usr/include/bits/string_fortified.h:34:10: warning: '__builtin_memcpy' forming offset [126, 128] is out of the bounds [0, 125] [-Warray-bounds]
   return __builtin___memcpy_chk (__dest, __src, __len, __bos0 (__dest));
          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

To avoid the warnings, remove the unused variable. Use strcpy in place of
memcpy checking copy length.

Signed-off-by: Shin'ichiro Kawasaki <kawasaki at juno.dti.ne.jp>
---
 libparted/fs/r/fat/bootsector.c | 5 ++---
 libparted/fs/r/fat/bootsector.h | 2 --
 2 files changed, 2 insertions(+), 5 deletions(-)

diff --git a/libparted/fs/r/fat/bootsector.c b/libparted/fs/r/fat/bootsector.c
index 46d5926..9130900 100644
--- a/libparted/fs/r/fat/bootsector.c
+++ b/libparted/fs/r/fat/bootsector.c
@@ -271,8 +271,6 @@ fat_boot_sector_analyse (FatBootSector* bs, PedFileSystem* fs)
 int
 fat_boot_sector_set_boot_code (FatBootSector** bsp, const PedFileSystem* fs)
 {
-	FatSpecific*	fs_info = FAT_SPECIFIC (fs);
-
 	PED_ASSERT (bsp != NULL);
 	*bsp = ped_malloc (fs->geom->dev->sector_size);
 	FatBootSector *bs = *bsp;
@@ -280,7 +278,8 @@ fat_boot_sector_set_boot_code (FatBootSector** bsp, const PedFileSystem* fs)
 
 	memset (bs, 0, 512);
 	memcpy (bs->boot_jump, FAT_BOOT_JUMP, 3);
-	memcpy (bs->u.fat32.boot_code, FAT_BOOT_CODE, FAT_BOOT_CODE_LENGTH);
+	PED_ASSERT (sizeof(FAT_BOOT_CODE) < sizeof(bs->u.fat32.boot_code));
+	strcpy (bs->u.fat32.boot_code, FAT_BOOT_CODE);
 	return 1;
 }
 
diff --git a/libparted/fs/r/fat/bootsector.h b/libparted/fs/r/fat/bootsector.h
index 6b0363f..42fc3f2 100644
--- a/libparted/fs/r/fat/bootsector.h
+++ b/libparted/fs/r/fat/bootsector.h
@@ -57,8 +57,6 @@ typedef struct _FatInfoSector	FatInfoSector;
 					/* message: */			\
 			FAT_BOOT_MESSAGE
 
-#define FAT_BOOT_CODE_LENGTH 128
-
 struct __attribute__ ((packed)) _FatBootSector {
         uint8_t		boot_jump[3];	/* 00: Boot strap short or near jump */
         uint8_t		system_id[8];	/* 03: system name */
-- 
2.22.0




More information about the parted-devel mailing list