diff options
author | Petr Štetiar <ynezz@true.cz> | 2019-07-19 21:34:16 +0200 |
---|---|---|
committer | Petr Štetiar <ynezz@true.cz> | 2019-07-19 22:11:15 +0200 |
commit | 04cb651376f94388a5a7c2c9a983553f8b909824 (patch) | |
tree | ec60781bf0b4fce0fd78f3f0847701b89d40b58c /tools | |
parent | 90b7dbf7d8acce9ab702d426f172f42c2033f330 (diff) | |
download | upstream-04cb651376f94388a5a7c2c9a983553f8b909824.tar.gz upstream-04cb651376f94388a5a7c2c9a983553f8b909824.tar.bz2 upstream-04cb651376f94388a5a7c2c9a983553f8b909824.zip |
firmware-utils: mkfwimage: fix more errors reported by gcc-6/7/9
src/mkfwimage.c:276:8: error: format '%lld' expects argument of type 'long long int', but argument 4 has type '__off_t' {aka 'const long int'} [-Werror=format=]
src/fw.h:71:36: error: format '%llu' expects argument of type 'long long unsigned int', but argument 6 has type '__off_t' {aka 'long int'} [-Werror=format=]
inlined from 'main' at src/mkfwimage.c:543:12:
/string_fortified.h:106:10: error: '__builtin_strncpy' output truncated before terminating nul copying 4 bytes from a string of the same length [-Werror=stringop-truncation]
inlined from 'write_part' at src/mkfwimage.c:235:2,
string_fortified.h:106:10: error: '__builtin_strncpy' specified bound 16 equals destination size [-Werror=stringop-truncation]
inlined from 'main' at src/mkfwimage.c:477:5:
string_fortified.h:106:10: error: '__builtin_strncpy' specified bound 256 equals destination size [-Werror=stringop-truncation]
inlined from 'main' at src/mkfwimage.c:496:5:
string_fortified.h:106:10: error: '__builtin_strncpy' specified bound 4096 equals destination size [-Werror=stringop-truncation]
inlined from 'main' at src/mkfwimage.c:481:5:
string_fortified.h:106:10: error: '__builtin_strncpy' specified bound 4096 equals destination size [-Werror=stringop-truncation]
inlined from 'main' at src/mkfwimage.c:485:5:
string_fortified.h:106:10: error: '__builtin_strncpy' specified bound 16 equals destination size [-Werror=stringop-truncation]
Runtested on ath79 and UBNT Bullet M XW.
Signed-off-by: Petr Štetiar <ynezz@true.cz>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/firmware-utils/Makefile | 2 | ||||
-rw-r--r-- | tools/firmware-utils/src/fw.h | 3 | ||||
-rw-r--r-- | tools/firmware-utils/src/mkfwimage.c | 23 |
3 files changed, 15 insertions, 13 deletions
diff --git a/tools/firmware-utils/Makefile b/tools/firmware-utils/Makefile index eca4dd7da7..d318788ac5 100644 --- a/tools/firmware-utils/Makefile +++ b/tools/firmware-utils/Makefile @@ -38,7 +38,7 @@ define Host/Compile $(call cc,mkzynfw) $(call cc,lzma2eva,-lz) $(call cc,mkcasfw) - $(call cc,mkfwimage,-lz -Wall -Werror -Wextra) + $(call cc,mkfwimage,-lz -Wall -Werror -Wextra -D_FILE_OFFSET_BITS=64) $(call cc,mkfwimage2,-lz) $(call cc,imagetag imagetag_cmdline cyg_crc32) $(call cc,add_header) diff --git a/tools/firmware-utils/src/fw.h b/tools/firmware-utils/src/fw.h index 44f8d851d2..53a92a573c 100644 --- a/tools/firmware-utils/src/fw.h +++ b/tools/firmware-utils/src/fw.h @@ -27,6 +27,7 @@ #define MAGIC_ENDS "ENDS" #define MAGIC_LENGTH 4 +#define PART_NAME_LENGTH 16 typedef struct header { char magic[MAGIC_LENGTH]; @@ -37,7 +38,7 @@ typedef struct header { typedef struct part { char magic[MAGIC_LENGTH]; - char name[16]; + char name[PART_NAME_LENGTH]; char pad[12]; u_int32_t memaddr; u_int32_t index; diff --git a/tools/firmware-utils/src/mkfwimage.c b/tools/firmware-utils/src/mkfwimage.c index c779bd5d83..4365fddc8b 100644 --- a/tools/firmware-utils/src/mkfwimage.c +++ b/tools/firmware-utils/src/mkfwimage.c @@ -230,9 +230,10 @@ static int write_part(void* mem, part_data_t* d) memcpy(mem + sizeof(part_t), addr, d->stats.st_size); munmap(addr, d->stats.st_size); - memset(p->name, 0, sizeof(p->name)); - strncpy(p->magic, MAGIC_PART, MAGIC_LENGTH); - strncpy(p->name, d->partition_name, sizeof(p->name)); + memset(p->name, 0, PART_NAME_LENGTH); + memcpy(p->magic, MAGIC_PART, MAGIC_LENGTH); + memcpy(p->name, d->partition_name, PART_NAME_LENGTH); + p->index = htonl(d->partition_index); p->data_size = htonl(d->stats.st_size); p->part_size = htonl(d->partition_length); @@ -273,7 +274,7 @@ static void print_image_info(const image_info_t* im) for (i = 0; i < im->part_count; ++i) { const part_data_t* d = &im->parts[i]; - INFO(" %10s: %8lld bytes (free: %8lld)\n", + INFO(" %10s: %8ld bytes (free: %8ld)\n", d->partition_name, d->stats.st_size, d->partition_length - d->stats.st_size); @@ -372,7 +373,7 @@ static int validate_image_layout(image_info_t* im) return -3; } if (d->stats.st_size > d->partition_length) { - ERROR("File '%s' too big (%d) - max size: 0x%08X (exceeds %llu bytes)\n", + ERROR("File '%s' too big (%d) - max size: 0x%08X (exceeds %lu bytes)\n", d->filename, i, d->partition_length, d->stats.st_size - d->partition_length); return -4; @@ -474,30 +475,30 @@ int main(int argc, char* argv[]) switch (o) { case 'v': if (optarg) - strncpy(im.version, optarg, sizeof(im.version)); + strncpy(im.version, optarg, sizeof(im.version) - 1); break; case 'o': if (optarg) - strncpy(im.outputfile, optarg, sizeof(im.outputfile)); + strncpy(im.outputfile, optarg, sizeof(im.outputfile) - 1); break; case 'm': if (optarg) - strncpy(im.magic, optarg, sizeof(im.magic)); + strncpy(im.magic, optarg, sizeof(im.magic) - 1); break; case 'h': usage(argv[0]); return -1; case 'k': if (optarg) - strncpy(kernelfile, optarg, sizeof(kernelfile)); + strncpy(kernelfile, optarg, sizeof(kernelfile) - 1); break; case 'r': if (optarg) - strncpy(rootfsfile, optarg, sizeof(rootfsfile)); + strncpy(rootfsfile, optarg, sizeof(rootfsfile) - 1); break; case 'B': if (optarg) - strncpy(board_name, optarg, sizeof(board_name)); + strncpy(board_name, optarg, sizeof(board_name) - 1); break; } } |