From: Dave Voutila Subject: Re: btrace: Parse unset arguments to 0 To: Christian Ludwig Cc: tech@openbsd.org Date: Sun, 14 Jan 2024 22:04:42 -0500 Christian Ludwig writes: > [[S/MIME Signed Part:Undecided]] > Reading unset arguments from a static tracepoint crashes btrace. > Set them to "0" instead. Do you have a simple btrace example? I believe there's an issue here, but not sure I'm following how to trigger it. > > --- > usr.sbin/btrace/btrace.c | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/usr.sbin/btrace/btrace.c b/usr.sbin/btrace/btrace.c > index 8ec7cbf37b2..ab4b10548b3 100644 > --- a/usr.sbin/btrace/btrace.c > +++ b/usr.sbin/btrace/btrace.c > @@ -1740,7 +1740,12 @@ ba2str(struct bt_arg *ba, struct dt_evt *dtev) > str = buf; > break; > case B_AT_BI_ARG0 ... B_AT_BI_ARG9: > - str = builtin_arg(dtev, ba->ba_type); > + dtpi = &dt_dtpis[dtev->dtev_pbn - 1]; > + if (dtpi != NULL && > + (ba->ba_type - B_AT_BI_ARG0) < dtpi->dtpi_nargs) > + str = builtin_arg(dtev, ba->ba_type); > + else > + str = "0"; > break; > case B_AT_BI_RETVAL: > snprintf(buf, sizeof(buf), "%ld", (long)dtev->dtev_retval[0]);