This is an automated email from the ASF dual-hosted git repository.
sjanc pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-core.git
The following commit(s) were added to refs/heads/master by this push:
new 27a76b48b sensors/lis2dw12: Fix memory corruption in SPI bus
configuration
27a76b48b is described below
commit 27a76b48bb18a77476ca04e13b46e8f61b0589da
Author: Wiktor Kwiatkowski <[email protected]>
AuthorDate: Tue Aug 18 14:29:07 2026 +0200
sensors/lis2dw12: Fix memory corruption in SPI bus configuration
This adds a union containing both i2c_node and spi_node.
This prevents memory corruption during sensor initialization caused by
wrong casting.
---
hw/drivers/sensors/lis2dw12/include/lis2dw12/lis2dw12.h | 5 ++++-
hw/sensor/creator/src/sensor_creator.c | 4 ++--
2 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/hw/drivers/sensors/lis2dw12/include/lis2dw12/lis2dw12.h
b/hw/drivers/sensors/lis2dw12/include/lis2dw12/lis2dw12.h
index 291c4f173..f24428829 100644
--- a/hw/drivers/sensors/lis2dw12/include/lis2dw12/lis2dw12.h
+++ b/hw/drivers/sensors/lis2dw12/include/lis2dw12/lis2dw12.h
@@ -276,7 +276,10 @@ struct lis2dw12_pdd {
struct lis2dw12 {
#if MYNEWT_VAL(BUS_DRIVER_PRESENT)
- struct bus_i2c_node i2c_node;
+ union {
+ struct bus_i2c_node i2c_node;
+ struct bus_spi_node spi_node;
+ };
#else
struct os_dev dev;
#endif
diff --git a/hw/sensor/creator/src/sensor_creator.c
b/hw/sensor/creator/src/sensor_creator.c
index bc28ed0f0..3e0df88e9 100644
--- a/hw/sensor/creator/src/sensor_creator.c
+++ b/hw/sensor/creator/src/sensor_creator.c
@@ -2158,11 +2158,11 @@ sensor_dev_create(void)
#if MYNEWT_VAL(LIS2DW12_OFB)
#if MYNEWT_VAL(BUS_DRIVER_PRESENT)
#if MYNEWT_VAL(LIS2DW12_OFB_I2C_NUM) >= 0
- rc = lis2dw12_create_i2c_sensor_dev((struct bus_i2c_node *)&lis2dw12,
"lis2dw12_0",
+ rc = lis2dw12_create_i2c_sensor_dev(&lis2dw12.i2c_node, "lis2dw12_0",
&lis2dw12_node_cfg, &lis2dw12_itf);
assert(rc == 0);
#elif MYNEWT_VAL(LIS2DW12_OFB_SPI_NUM) >= 0
- rc = lis2dw12_create_spi_sensor_dev((struct bus_spi_node *)&lis2dw12,
"lis2dw12_0",
+ rc = lis2dw12_create_spi_sensor_dev(&lis2dw12.spi_node, "lis2dw12_0",
&lis2dw12_node_cfg, &lis2dw12_itf);
assert(rc == 0);
#endif