| From 03f367ad5dc774c77287a9c53f27e7bc4a18210c Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Sat, 23 Sep 2023 17:20:48 +0200 |
| Subject: media: vivid: avoid integer overflow |
| |
| From: Hans Verkuil <hverkuil-cisco@xs4all.nl> |
| |
| [ Upstream commit 4567ebf8e8f9546b373e78e3b7d584cc30b62028 ] |
| |
| Fixes these compiler warnings: |
| |
| drivers/media/test-drivers/vivid/vivid-rds-gen.c: In function 'vivid_rds_gen_fill': |
| drivers/media/test-drivers/vivid/vivid-rds-gen.c:147:56: warning: '.' directive output may be truncated writing 1 byte into a region of size between 0 and 3 [-Wformat-truncation=] |
| 147 | snprintf(rds->psname, sizeof(rds->psname), "%6d.%1d", |
| | ^ |
| drivers/media/test-drivers/vivid/vivid-rds-gen.c:147:52: note: directive argument in the range [0, 9] |
| 147 | snprintf(rds->psname, sizeof(rds->psname), "%6d.%1d", |
| | ^~~~~~~~~ |
| drivers/media/test-drivers/vivid/vivid-rds-gen.c:147:9: note: 'snprintf' output between 9 and 12 bytes into a destination of size 9 |
| 147 | snprintf(rds->psname, sizeof(rds->psname), "%6d.%1d", |
| | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 148 | freq / 16, ((freq & 0xf) * 10) / 16); |
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| |
| Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> |
| Acked-by: Arnd Bergmann <arnd@arndb.de> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/media/platform/vivid/vivid-rds-gen.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| diff --git a/drivers/media/platform/vivid/vivid-rds-gen.c b/drivers/media/platform/vivid/vivid-rds-gen.c |
| index b5b104ee64c99..c57771119a34b 100644 |
| --- a/drivers/media/platform/vivid/vivid-rds-gen.c |
| +++ b/drivers/media/platform/vivid/vivid-rds-gen.c |
| @@ -145,7 +145,7 @@ void vivid_rds_gen_fill(struct vivid_rds_gen *rds, unsigned freq, |
| rds->ta = alt; |
| rds->ms = true; |
| snprintf(rds->psname, sizeof(rds->psname), "%6d.%1d", |
| - freq / 16, ((freq & 0xf) * 10) / 16); |
| + (freq / 16) % 1000000, (((freq & 0xf) * 10) / 16) % 10); |
| if (alt) |
| strscpy(rds->radiotext, |
| " The Radio Data System can switch between different Radio Texts ", |
| -- |
| 2.42.0 |
| |