[DTrace-devel] [PATCH 5/5] print: initialize dv_last_depth when print()ing arrays
Nick Alcock
nick.alcock at oracle.com
Mon Mar 4 22:03:15 UTC 2024
Much like ++ / -- earlier, print()ing arrays initializes a second copy of a
relevant structure (in this case, dt_visit_arg) but fails to initialize all
its members, leading to (theoretical) wrong-looking output as nonsense off
the stack is interpreted as a nesting depth.
Signed-off-by: Nick Alcock <nick.alcock at oracle.com>
---
libdtrace/dt_printf.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/libdtrace/dt_printf.c b/libdtrace/dt_printf.c
index e844dc1bd18fe..1f52abb14abec 100644
--- a/libdtrace/dt_printf.c
+++ b/libdtrace/dt_printf.c
@@ -2198,6 +2198,7 @@ doprint:
dva2.dv_data = dva->dv_data;
dva2.dv_startindent = dva->dv_startindent;
dva2.dv_size = dva->dv_size;
+ dva2.dv_last_depth = dva->dv_last_depth;
if (ctf_type_encoding(dva->dv_ctfp, a.ctr_contents, &e) < 0) {
dt_dprintf("error retrieving type encoding for array contents in [%ld]: %s\n",
a.ctr_contents,
--
2.43.0.272.gce700b77fd
More information about the DTrace-devel
mailing list