From: Christian Ludwig Subject: btrace: Parse unset arguments to 0 To: "tech@openbsd.org" Date: Fri, 12 Jan 2024 15:45:53 +0000 Reading unset arguments from a static tracepoint crashes btrace. Set them to "0" instead. --- 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]); -- 2.34.1