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

Kris Van Hees kris.van.hees at oracle.com
Wed Oct 13 23:46:19 PDT 2021


On Wed, Sep 29, 2021 at 11:13:35AM -0400, eugene.loh at oracle.com wrote:
> From: Eugene Loh <eugene.loh at oracle.com>
> 
> Signed-off-by: Eugene Loh <eugene.loh at oracle.com>

Reviewed-by: Kris Van Hees <kris.van.hees at oracle.com>

... and added to my tstaging tree for dev

> ---
>  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 f25fb9f0..01a7e9c3 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);
>  
>  		TRACE_REGSET("store_val(): Begin ");
>  		off = dt_rec_add(pcb->pcb_hdl, dt_cg_fill_gap, kind,
> @@ -956,6 +958,9 @@ dt_cg_store_val(dt_pcb_t *pcb, dt_node_t *dnp, dtrace_actkind_t kind,
>  		 * Retrieve the length of the string, limit it to the maximum
>  		 * string size, and store it in the buffer at [%r9 + off].
>  		 */
> +		reg = dt_regset_alloc(drp);
> +		if (reg == -1)
> +			longjmp(yypcb->pcb_jmpbuf, EDT_NOREG);
>  		dt_cg_strlen(dlp, drp, reg, dnp->dn_reg);
>  		dt_regset_xalloc(drp, BPF_REG_0);
>  		emit(dlp,  BPF_BRANCH_IMM(BPF_JLT, reg, size, size_ok));
> -- 
> 2.18.4
> 
> 
> _______________________________________________
> DTrace-devel mailing list
> DTrace-devel at oss.oracle.com
> https://oss.oracle.com/mailman/listinfo/dtrace-devel



More information about the DTrace-devel mailing list