| From 49b770ccbc6b4e0a130e0460590033cbb0778951 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Fri, 8 May 2020 16:40:22 +0200 |
| Subject: media: firewire: Using uninitialized values in node_probe() |
| |
| From: Dan Carpenter <dan.carpenter@oracle.com> |
| |
| [ Upstream commit 2505a210fc126599013aec2be741df20aaacc490 ] |
| |
| If fw_csr_string() returns -ENOENT, then "name" is uninitialized. So |
| then the "strlen(model_names[i]) <= name_len" is true because strlen() |
| is unsigned and -ENOENT is type promoted to a very high positive value. |
| Then the "strncmp(name, model_names[i], name_len)" uses uninitialized |
| data because "name" is uninitialized. |
| |
| Fixes: 92374e886c75 ("[media] firedtv: drop obsolete backend abstraction") |
| Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> |
| Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> |
| Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/media/firewire/firedtv-fw.c | 2 ++ |
| 1 file changed, 2 insertions(+) |
| |
| diff --git a/drivers/media/firewire/firedtv-fw.c b/drivers/media/firewire/firedtv-fw.c |
| index 97144734eb052..3f1ca40b9b987 100644 |
| --- a/drivers/media/firewire/firedtv-fw.c |
| +++ b/drivers/media/firewire/firedtv-fw.c |
| @@ -272,6 +272,8 @@ static int node_probe(struct fw_unit *unit, const struct ieee1394_device_id *id) |
| |
| name_len = fw_csr_string(unit->directory, CSR_MODEL, |
| name, sizeof(name)); |
| + if (name_len < 0) |
| + return name_len; |
| for (i = ARRAY_SIZE(model_names); --i; ) |
| if (strlen(model_names[i]) <= name_len && |
| strncmp(name, model_names[i], name_len) == 0) |
| -- |
| 2.25.1 |
| |