summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulius Werner <jwerner@chromium.org>2020-01-21 15:40:59 -0800
committerCommit Bot <commit-bot@chromium.org>2020-01-25 05:39:33 +0000
commitf57ad98c29072624bf0977ab972201595efd2b38 (patch)
tree975068bb32cfa08a455ee2bb8bd2fcd2272c8afb
parent2c41d5e07900efd02e2d4041837669ec2490fe68 (diff)
downloadvboot-f57ad98c29072624bf0977ab972201595efd2b38.tar.gz
Enable format string warnings for vb2ex_printf()stabilize-12859.B
This patch enables the -Wformat warning and tags vb2ex_printf() with the appropriate attribute so the compiler recognizes it as a printf variant. This shows a bunch of (sometimes pretty bad) issues in existing code that are hereby fixed. Cannot enable -Wformat-security yet since a lot of code still uses non-constant format strings and it's unclear whether we can/want to change that in all circumstances (e.g. stuff like DoError()). BRANCH=None BUG=None TEST=make runtests Change-Id: I917a4982a97a668a5c0f793f7c771573f2bd3949 Signed-off-by: Julius Werner <jwerner@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2013857
-rw-r--r--Makefile2
-rw-r--r--firmware/2lib/include/2api.h1
-rw-r--r--futility/cmd_sign.c2
-rw-r--r--futility/file_type_bios.c2
-rw-r--r--futility/file_type_rwsig.c4
-rw-r--r--futility/file_type_usbpd1.c2
-rw-r--r--futility/vb1_helper.c24
7 files changed, 19 insertions, 18 deletions
diff --git a/Makefile b/Makefile
index b12029e8..0c075e06 100644
--- a/Makefile
+++ b/Makefile
@@ -142,7 +142,7 @@ COMMON_FLAGS := -pipe ${WERROR} -Wall -Wstrict-prototypes -Wtype-limits \
-Wundef -Wmissing-prototypes -Wno-trigraphs -Wredundant-decls -Wshadow \
-Wwrite-strings -Wstrict-aliasing -Wdate-time -Wno-unknown-warning \
-Wno-address-of-packed-member -ffunction-sections -fdata-sections \
- -Wimplicit-fallthrough ${DEBUG_FLAGS}
+ -Wimplicit-fallthrough -Wformat -Wno-format-security ${DEBUG_FLAGS}
# Note: FIRMWARE_ARCH is defined by the Chromium OS ebuild.
ifeq (${FIRMWARE_ARCH},arm)
diff --git a/firmware/2lib/include/2api.h b/firmware/2lib/include/2api.h
index 52e5a4a6..e8ce89da 100644
--- a/firmware/2lib/include/2api.h
+++ b/firmware/2lib/include/2api.h
@@ -804,6 +804,7 @@ vb2_error_t vb2ex_read_resource(struct vb2_context *ctx,
* @param func Function name generating output, or NULL.
* @param fmt Printf format string
*/
+__attribute__((format(printf, 2, 3)))
void vb2ex_printf(const char *func, const char *fmt, ...);
/**
diff --git a/futility/cmd_sign.c b/futility/cmd_sign.c
index 109287c9..c69f7124 100644
--- a/futility/cmd_sign.c
+++ b/futility/cmd_sign.c
@@ -223,7 +223,7 @@ int ft_sign_kern_preamble(const char *name, uint8_t *buf, uint32_t len,
fprintf(stderr, "Unable to sign kernel blob\n");
return 1;
}
- VB2_DEBUG("vblock_size = 0x%" PRIx64 "\n", vblock_size);
+ VB2_DEBUG("vblock_size = %#x\n", vblock_size);
if (sign_option.create_new_outfile) {
/* Write out what we've been asked for */
diff --git a/futility/file_type_bios.c b/futility/file_type_bios.c
index 9d45269c..7e805f50 100644
--- a/futility/file_type_bios.c
+++ b/futility/file_type_bios.c
@@ -467,7 +467,7 @@ int ft_sign_bios(const char *name, uint8_t *buf, uint32_t len, void *data)
state.area[c].buf = buf + ah->area_offset;
state.area[c].len = ah->area_size;
- VB2_DEBUG("%s() examining FMAP area %d (%s),"
+ VB2_DEBUG("examining FMAP area %d (%s),"
" offset=0x%08x len=0x%08x\n",
c, ah_name, ah->area_offset, ah->area_size);
diff --git a/futility/file_type_rwsig.c b/futility/file_type_rwsig.c
index c5616e57..bcccb2dd 100644
--- a/futility/file_type_rwsig.c
+++ b/futility/file_type_rwsig.c
@@ -112,7 +112,7 @@ int ft_show_rwsig(const char *name, uint8_t *buf, uint32_t len, void *nuthin)
sig_size = fmaparea->area_size;
- VB2_DEBUG("Looking for signature at %#x (%#x)\n",
+ VB2_DEBUG("Looking for signature at %#tx (%#x)\n",
(uint8_t*)sig - buf, sig_size);
if (VB2_SUCCESS != vb21_verify_signature(sig, sig_size))
@@ -235,7 +235,7 @@ int ft_sign_rwsig(const char *name, uint8_t *buf, uint32_t len, void *nuthin)
sig_size = fmaparea->area_size;
- VB2_DEBUG("Looking for signature at %#x (%#x)\n",
+ VB2_DEBUG("Looking for signature at %#tx (%#x)\n",
(uint8_t*)old_sig - buf, sig_size);
data = fmap_find_by_name(buf, len, fmap, "EC_RW",
diff --git a/futility/file_type_usbpd1.c b/futility/file_type_usbpd1.c
index 80650413..42cb62cc 100644
--- a/futility/file_type_usbpd1.c
+++ b/futility/file_type_usbpd1.c
@@ -95,7 +95,7 @@ int ft_sign_usbpd1(const char *name, uint8_t *buf, uint32_t len, void *data)
uint32_t rw_offset;
uint32_t r;
- VB2_DEBUG("%s(): name %s len 0x%08x (%d)\n", name, len, len);
+ VB2_DEBUG("name %s len %#.8x (%d)\n", name, len, len);
/* Get image locations */
if (!parse_size_opts(len, &ro_size, &rw_size, &ro_offset, &rw_offset))
diff --git a/futility/vb1_helper.c b/futility/vb1_helper.c
index 74391827..cdc39251 100644
--- a/futility/vb1_helper.c
+++ b/futility/vb1_helper.c
@@ -185,8 +185,8 @@ static int PickApartVmlinuz(uint8_t *kernel_buf,
}
kernel32_size = kernel_size - kernel32_start;
- VB2_DEBUG(" kernel16_start=0x%" PRIx64 "\n", 0);
- VB2_DEBUG(" kernel16_size=0x%" PRIx64 "\n", kernel32_start);
+ VB2_DEBUG(" kernel16_start=%#x\n", 0);
+ VB2_DEBUG(" kernel16_size=%#x\n", kernel32_start);
/* Copy the original zeropage data from kernel_buf into
* g_param_data, then tweak a few fields for our purposes */
@@ -221,8 +221,8 @@ static int PickApartVmlinuz(uint8_t *kernel_buf,
break;
}
- VB2_DEBUG(" kernel32_start=0x%" PRIx64 "\n", kernel32_start);
- VB2_DEBUG(" kernel32_size=0x%" PRIx64 "\n", kernel32_size);
+ VB2_DEBUG(" kernel32_start=%#x\n", kernel32_start);
+ VB2_DEBUG(" kernel32_size=%#x\n", kernel32_size);
/* Keep just the 32-bit kernel. */
if (kernel32_size) {
@@ -461,7 +461,7 @@ int WriteSomeParts(const char *outfile,
FILE *f;
/* Write the output file */
- VB2_DEBUG("writing %s with 0x%" PRIx64 ", 0x%" PRIx64 "\n",
+ VB2_DEBUG("writing %s with %#x, %#x\n",
outfile, part1_size, part2_size);
f = fopen(outfile, "wb");
@@ -674,7 +674,7 @@ uint8_t *CreateKernelBlob(uint8_t *vmlinuz_buf, uint32_t vmlinuz_size,
* devices.
*/
g_kernel_blob_size = roundup(g_kernel_blob_size, CROS_ALIGN);
- VB2_DEBUG("g_kernel_blob_size 0x%" PRIx64 "\n", g_kernel_blob_size);
+ VB2_DEBUG("g_kernel_blob_size %#x\n", g_kernel_blob_size);
/* Allocate space for the blob. */
g_kernel_blob_data = malloc(g_kernel_blob_size);
@@ -682,22 +682,22 @@ uint8_t *CreateKernelBlob(uint8_t *vmlinuz_buf, uint32_t vmlinuz_size,
/* Assign the sub-pointers */
g_kernel_data = g_kernel_blob_data + now;
- VB2_DEBUG("g_kernel_size 0x%" PRIx64 " ofs 0x%" PRIx64 "\n",
+ VB2_DEBUG("g_kernel_size %#x ofs %#x\n",
g_kernel_size, now);
now += roundup(g_kernel_size, CROS_ALIGN);
g_config_data = g_kernel_blob_data + now;
- VB2_DEBUG("g_config_size 0x%" PRIx64 " ofs 0x%" PRIx64 "\n",
+ VB2_DEBUG("g_config_size %#x ofs %#x\n",
g_config_size, now);
now += g_config_size;
g_param_data = g_kernel_blob_data + now;
- VB2_DEBUG("g_param_size 0x%" PRIx64 " ofs 0x%" PRIx64 "\n",
+ VB2_DEBUG("g_param_size %#x ofs %#x\n",
g_param_size, now);
now += g_param_size;
g_bootloader_data = g_kernel_blob_data + now;
- VB2_DEBUG("g_bootloader_size 0x%" PRIx64 " ofs 0x%" PRIx64 "\n",
+ VB2_DEBUG("g_bootloader_size %#x ofs %#x\n",
g_bootloader_size, now);
g_ondisk_bootloader_addr = kernel_body_load_address + now;
VB2_DEBUG("g_ondisk_bootloader_addr 0x%" PRIx64 "\n",
@@ -706,14 +706,14 @@ uint8_t *CreateKernelBlob(uint8_t *vmlinuz_buf, uint32_t vmlinuz_size,
if (g_vmlinuz_header_size) {
g_vmlinuz_header_data = g_kernel_blob_data + now;
- VB2_DEBUG("g_vmlinuz_header_size 0x%" PRIx64 " ofs 0x%" PRIx64 "\n",
+ VB2_DEBUG("g_vmlinuz_header_size %#x ofs %#x\n",
g_vmlinuz_header_size, now);
g_ondisk_vmlinuz_header_addr = kernel_body_load_address + now;
VB2_DEBUG("g_ondisk_vmlinuz_header_addr 0x%" PRIx64 "\n",
g_ondisk_vmlinuz_header_addr);
}
- VB2_DEBUG("end of kern_blob at kern_blob+0x%" PRIx64 "\n", now);
+ VB2_DEBUG("end of kern_blob at kern_blob+%#x\n", now);
/* Copy the kernel and params bits into the correct places */
if (0 != PickApartVmlinuz(vmlinuz_buf, vmlinuz_size,