trace: dynamic width format syntax not validated

Bug #1844817 reported by Philippe Mathieu-Daudé
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
QEMU
Fix Released
Undecided
Unassigned

Bug Description

The dtrace via stap backend cannot support the dynamic '*' width format.

Eric noted in https://lists.gnu.org/archive/html/qemu-devel/2019-09/msg04720.html:

  https://sourceware.org/systemtap/langref.pdf

  section 9.2 printf, states:

  "The printf formatting directives are similar to those of C, except that
  they are fully checked for type by the translator."

  and does NOT list handling for '*' under precision or width.

Some trace events have been merged without checking this:

$ git ls-files|fgrep trace-event|xargs git grep '*\("\|x\)'
hw/block/trace-events:11:pflash_io_read(uint64_t offset, int width, int fmt_width, uint32_t value, uint8_t cmd, uint8_t wcycle) "offset:0x%04"PRIx64" width:%d value:0x%0*x cmd:0x%02x wcycle:%u"
hw/block/trace-events:12:pflash_io_write(uint64_t offset, int width, int fmt_width, uint32_t value, uint8_t wcycle) "offset:0x%04"PRIx64" width:%d value:0x%0*x wcycle:%u"
hw/block/trace-events:13:pflash_data_read(uint64_t offset, int width, uint32_t value) "data offset:0x%04"PRIx64" value:0x%0*x"
hw/block/trace-events:14:pflash_data_write(uint64_t offset, int width, uint32_t value, uint64_t counter) "data offset:0x%04"PRIx64" value:0x%0*x counter:0x%016"PRIx64
hw/mips/trace-events:2:gt64120_read(const char *regname, int width, uint64_t value) "gt64120 read %s value:0x%0*" PRIx64
hw/mips/trace-events:3:gt64120_write(const char *regname, int width, uint64_t value) "gt64120 write %s value:0x%0*" PRIx64

Tags: trace
Changed in qemu:
status: New → Fix Committed
Revision history for this message
Philippe Mathieu-Daudé (philmd) wrote :

Fixed in v4.2.0 (commits abc7cf3655 & 10f9f1fbed).

Changed in qemu:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.