Enable format string warnings for vb2ex_printf()
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
This commit is contained in:
parent
2c41d5e079
commit
f57ad98c29
2
Makefile
2
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)
|
||||
|
|
|
@ -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, ...);
|
||||
|
||||
/**
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Reference in New Issue