[DTrace-devel] [PATCH 2/4] Check not-NULL pointer before trace(string)

eugene.loh at oracle.com eugene.loh at oracle.com
Tue Sep 7 17:06:40 PDT 2021


From: Eugene Loh <eugene.loh at oracle.com>

Signed-off-by: Eugene Loh <eugene.loh at oracle.com>
---
 libdtrace/dt_cg.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/libdtrace/dt_cg.c b/libdtrace/dt_cg.c
index a5006fe8..7132b260 100644
--- a/libdtrace/dt_cg.c
+++ b/libdtrace/dt_cg.c
@@ -946,7 +946,9 @@ dt_cg_store_val(dt_pcb_t *pcb, dt_node_t *dnp, dtrace_actkind_t kind,
 		return 0;
 	} else if (dt_node_is_string(dnp)) {
 		uint_t		size_ok = dt_irlist_label(dlp);
-		int		reg = dt_regset_alloc(drp);
+		int		reg;
+
+		dt_cg_check_notnull(dlp, drp, dnp->dn_reg);
 
 		off = dt_rec_add(pcb->pcb_hdl, dt_cg_fill_gap, kind,
 				 size, 1, pfp, arg);
@@ -956,6 +958,9 @@ dt_cg_store_val(dt_pcb_t *pcb, dt_node_t *dnp, dtrace_actkind_t kind,
 		 * string size, and adjust for the terminating NUL byte and the
 		 * length prefix.
 		 */
+		reg = dt_regset_alloc(drp);
+		if (reg == -1)
+			longjmp(yypcb->pcb_jmpbuf, EDT_NOREG);
 		dt_cg_strlen(dlp, drp, reg, dnp->dn_reg);
 		emit(dlp,  BPF_BRANCH_IMM(BPF_JLT, reg, size, size_ok));
 		emit(dlp,  BPF_MOV_IMM(reg, size));
-- 
2.18.4




More information about the DTrace-devel mailing list