[DTrace-devel] [PATCH 3/5] Fix size for typecast tuple (and aggregation key) components

Kris Van Hees kris.van.hees at oracle.com
Wed Sep 7 01:36:07 UTC 2022


Components of a tuple (or aggregation key) were being typecast where
needed but if narrowing or widening took place, the storage size to store
the value was never updated.

Signed-off-by: Kris Van Hees <kris.van.hees at oracle.com>
---
 libdtrace/dt_cg.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/libdtrace/dt_cg.c b/libdtrace/dt_cg.c
index ffab2443..fae32516 100644
--- a/libdtrace/dt_cg.c
+++ b/libdtrace/dt_cg.c
@@ -2765,6 +2765,9 @@ empty_args:
 		dt_cg_typecast(dnp, &isp->dis_args[i], dlp, drp);
 		isp->dis_args[i].dn_reg = -1;
 
+		/* The typecast may have changed the size. */
+		size = dt_node_sizeof(&isp->dis_args[i]);
+
 		if (dt_node_is_scalar(dnp) || dt_node_is_float(dnp)) {
 			assert(size > 0 && size <= 8 &&
 			       (size & (size - 1)) == 0);
-- 
2.34.1




More information about the DTrace-devel mailing list