[DTrace-devel] [PATCH 21/47] Fix double-free of dt_datadesc_t structures
Kris Van Hees
kris.van.hees at oracle.com
Sun May 3 20:17:26 PDT 2020
While the dt_datadesc_t structures were introduced with a reference
count (along with dt_datadesc_hold() and dt_datadesc_release() functions
to manage them), there was still a direct dt_free() of a dt_datadesc_t
structure in dtrace_stmt_destroy().
Orabug: 31220517
Signed-off-by: Kris Van Hees <kris.van.hees at oracle.com>
Reviewed-by: Kris Van Hees <kris.van.hees at oracle.com>
Reviewed-by: Eugene Loh <eugene.loh at oracle.com>
---
libdtrace/dt_impl.h | 1 +
libdtrace/dt_map.c | 2 +-
libdtrace/dt_program.c | 2 +-
3 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/libdtrace/dt_impl.h b/libdtrace/dt_impl.h
index ee02e55c..dd4128d4 100644
--- a/libdtrace/dt_impl.h
+++ b/libdtrace/dt_impl.h
@@ -725,6 +725,7 @@ extern int dt_aggregate_go(dtrace_hdl_t *);
extern int dt_aggregate_init(dtrace_hdl_t *);
extern void dt_aggregate_destroy(dtrace_hdl_t *);
+extern void dt_datadesc_release(dtrace_hdl_t *, dtrace_datadesc_t *);
extern dtrace_datadesc_t *dt_datadesc_create(dtrace_hdl_t *);
extern int dt_datadesc_finalize(dtrace_hdl_t *, dtrace_datadesc_t *);
extern dtrace_epid_t dt_epid_add(dtrace_hdl_t *, dtrace_datadesc_t *,
diff --git a/libdtrace/dt_map.c b/libdtrace/dt_map.c
index 58933776..00668c70 100644
--- a/libdtrace/dt_map.c
+++ b/libdtrace/dt_map.c
@@ -21,7 +21,7 @@ dt_datadesc_hold(dtrace_datadesc_t *ddp)
ddp->dtdd_refcnt++;
}
-static void
+void
dt_datadesc_release(dtrace_hdl_t *dtp, dtrace_datadesc_t *ddp)
{
if (--ddp->dtdd_refcnt > 0)
diff --git a/libdtrace/dt_program.c b/libdtrace/dt_program.c
index b154668d..0b5eb4f0 100644
--- a/libdtrace/dt_program.c
+++ b/libdtrace/dt_program.c
@@ -355,7 +355,7 @@ dtrace_stmt_destroy(dtrace_hdl_t *dtp, dtrace_stmtdesc_t *sdp)
dt_printf_destroy(sdp->dtsd_fmtdata);
dt_ecbdesc_release(dtp, sdp->dtsd_ecbdesc);
- dt_free(dtp, sdp->dtsd_ddesc);
+ dt_datadesc_release(dtp, sdp->dtsd_ddesc);
dt_free(dtp, sdp);
}
--
2.26.0
More information about the DTrace-devel
mailing list