[DTrace-devel] [PATCH 1/4] cg: fix ++/-- dynvar storage

Nick Alcock nick.alcock at oracle.com
Mon Mar 4 18:47:44 UTC 2024


This function mocks up a fake right hand side for dt_cg_store_var(), but the
fakery is only partial, and it fails to initialize dn_kind, which
dt_cg_store_var() then relies upon.  We usually survive, but it's still
using random junk off the stack.

Fix trivial.

Signed-off-by: Nick Alcock <nick.alcock at oracle.com>
---
 libdtrace/dt_cg.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/libdtrace/dt_cg.c b/libdtrace/dt_cg.c
index 1b2dbb848a5fd..949e4110750d8 100644
--- a/libdtrace/dt_cg.c
+++ b/libdtrace/dt_cg.c
@@ -4338,6 +4338,7 @@ dt_cg_incdec_op(dt_node_t *dnp, dt_irlist_t *dlp, dt_regset_t *drp, uint_t op,
 		 * so we fake one here.
 		 */
 		val.dn_op = DT_TOK_INT;
+		val.dn_kind = DT_NODE_INT;
 		val.dn_value = op == BPF_ADD ? adj : -adj;
 
 		lbl_dflt = dt_irlist_label(dlp);
-- 
2.43.0.272.gce700b77fd




More information about the DTrace-devel mailing list