* [PATCH] iio: chemical: scd30: avoid potential NULL deref in scd30_i2c_command()
@ 2026-05-06 18:15 Stepan Ionichev
0 siblings, 0 replies; only message in thread
From: Stepan Ionichev @ 2026-05-06 18:15 UTC (permalink / raw)
To: tomasz.duszynski
Cc: jic23, dlechner, nuno.sa, andy, linux-iio, linux-kernel,
Stepan Ionichev
scd30_i2c_command() takes an opaque "response" buffer plus its size.
At the start of the function the code already checks if response is
NULL (via the rsp local), but the response-decoding loop after the
i2c transfer always dereferences rsp without re-checking.
With the current callers in scd30_core.c this is harmless, since
write commands pass response=NULL together with size=0 (so the loop
body is never entered). However, the inconsistency is an accident
waiting to happen if a future caller passes response=NULL together
with size > 0 -- the loop would then write through a NULL pointer.
smatch flags this:
drivers/iio/chemical/scd30_i2c.c:104 scd30_i2c_command() error: we
previously assumed rsp could be null (see line 77)
Bail out early when rsp is NULL so the function is robust regardless
of the (cmd, size) combination chosen by the caller.
No functional change for the existing callers.
Signed-off-by: Stepan Ionichev <sozdayvek@gmail.com>
---
drivers/iio/chemical/scd30_i2c.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/iio/chemical/scd30_i2c.c b/drivers/iio/chemical/scd30_i2c.c
index 436df9c61..fb06bec75 100644
--- a/drivers/iio/chemical/scd30_i2c.c
+++ b/drivers/iio/chemical/scd30_i2c.c
@@ -93,6 +93,9 @@ static int scd30_i2c_command(struct scd30_state *state, enum scd30_cmd cmd, u16
if (ret)
return ret;
+ if (!rsp)
+ return 0;
+
/* validate received data and strip off crc bytes */
for (i = 0; i < size; i += 3) {
crc = crc8(scd30_i2c_crc8_tbl, buf + i, 2, CRC8_INIT_VALUE);
--
2.43.0
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2026-05-06 18:17 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-06 18:15 [PATCH] iio: chemical: scd30: avoid potential NULL deref in scd30_i2c_command() Stepan Ionichev
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox