From 890a722336786b80eb04e81eb10a6c56ffc8af51 Mon Sep 17 00:00:00 2001 From: Gaetan Perrot Date: Sat, 10 Jan 2026 02:32:43 +0900 Subject: [PATCH] sensing: sensor_mgmt: fix potential NULL dereferences Ensure pointers are validated before dereferencing them in set_arbitrate_interval() and set_interval(). This avoids accessing sensor or connection fields prior to validation and makes the code safe even when assertions are disabled. No functional change intended. Signed-off-by: Gaetan Perrot --- subsys/sensing/sensor_mgmt.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/subsys/sensing/sensor_mgmt.c b/subsys/sensing/sensor_mgmt.c index a3ce834c64989..c8437f9eb592e 100644 --- a/subsys/sensing/sensor_mgmt.c +++ b/subsys/sensing/sensor_mgmt.c @@ -75,12 +75,14 @@ static uint32_t arbitrate_interval(struct sensing_sensor *sensor) static int set_arbitrate_interval(struct sensing_sensor *sensor, uint32_t interval) { - struct sensing_submit_config *config = sensor->iodev->data; + struct sensing_submit_config *config; struct sensor_value odr = {0}; int ret; __ASSERT(sensor && sensor->dev, "set arbitrate interval, sensor or sensor device is NULL"); + config = sensor->iodev->data; + LOG_INF("set arbitrate interval:%d, sensor:%s, is_streaming:%d", interval, sensor->dev->name, config->is_streaming); @@ -409,10 +411,10 @@ int sensing_register_callback(struct sensing_connection *conn, int set_interval(struct sensing_connection *conn, uint32_t interval) { - LOG_INF("set interval, sensor:%s, interval:%u(us)", conn->source->dev->name, interval); - __ASSERT(conn && conn->source, "set interval, connection or reporter not be NULL"); + LOG_INF("set interval, sensor:%s, interval:%u(us)", conn->source->dev->name, interval); + if (interval > 0 && interval < conn->source->info->minimal_interval) { LOG_ERR("interval:%d(us) should no less than min interval:%d(us)", interval, conn->source->info->minimal_interval);