linux-stable/drivers/media/pci
Gustavo A. R. Silva e991457afd media: ngene: Fix out-of-bounds bug in ngene_command_config_free_buf()
commit 8d4abca95e upstream.

Fix an 11-year old bug in ngene_command_config_free_buf() while
addressing the following warnings caught with -Warray-bounds:

arch/alpha/include/asm/string.h:22:16: warning: '__builtin_memcpy' offset [12, 16] from the object at 'com' is out of the bounds of referenced subobject 'config' with type 'unsigned char' at offset 10 [-Warray-bounds]
arch/x86/include/asm/string_32.h:182:25: warning: '__builtin_memcpy' offset [12, 16] from the object at 'com' is out of the bounds of referenced subobject 'config' with type 'unsigned char' at offset 10 [-Warray-bounds]

The problem is that the original code is trying to copy 6 bytes of
data into a one-byte size member _config_ of the wrong structue
FW_CONFIGURE_BUFFERS, in a single call to memcpy(). This causes a
legitimate compiler warning because memcpy() overruns the length
of &com.cmd.ConfigureBuffers.config. It seems that the right
structure is FW_CONFIGURE_FREE_BUFFERS, instead, because it contains
6 more members apart from the header _hdr_. Also, the name of
the function ngene_command_config_free_buf() suggests that the actual
intention is to ConfigureFreeBuffers, instead of ConfigureBuffers
(which takes place in the function ngene_command_config_buf(), above).

Fix this by enclosing those 6 members of struct FW_CONFIGURE_FREE_BUFFERS
into new struct config, and use &com.cmd.ConfigureFreeBuffers.config as
the destination address, instead of &com.cmd.ConfigureBuffers.config,
when calling memcpy().

This also helps with the ongoing efforts to globally enable
-Warray-bounds and get us closer to being able to tighten the
FORTIFY_SOURCE routines on memcpy().

Link: https://github.com/KSPP/linux/issues/109
Fixes: dae52d009f ("V4L/DVB: ngene: Initial check-in")
Cc: stable@vger.kernel.org
Reported-by: kernel test robot <lkp@intel.com>
Reviewed-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org>
Link: https://lore.kernel.org/linux-hardening/20210420001631.GA45456@embeddedor/
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-07-28 14:35:45 +02:00
..
b2c2
bt8xx media: subdev: disallow ioctl for saa6588/davinci 2021-07-19 09:45:02 +02:00
cobalt media: cobalt: fix race condition in setting HPD 2021-07-14 16:55:51 +02:00
cx18 media: cx18: Replace http links with https ones 2020-07-19 14:00:32 +02:00
cx88 media: pci: fix common ALSA DMA-mapping related codes 2020-09-26 10:34:44 +02:00
cx23885 media: cx23885: add more quirks for reset DMA on some AMD IOMMU 2021-03-11 14:17:24 +01:00
cx25821 media: cx25821: Fix a bug when reallocating some dma memory 2021-03-04 11:37:43 +01:00
ddbridge treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
dm1105
dt3155 media: media/pci: use vb2_video_unregister_device() 2020-08-28 15:01:54 +02:00
intel media: v4l2-async: Clean v4l2_async_notifier_add_fwnode_remote_subdev 2021-07-14 16:56:11 +02:00
ivtv media updates for v5.9-rc1 2020-08-07 13:00:53 -07:00
mantis media: mantis: convert tasklets to use new tasklet_setup() API 2020-08-29 08:11:19 +02:00
meye treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
netup_unidvb media: netup_unidvb: Don't leak SPI master in probe error path 2020-12-30 11:54:04 +01:00
ngene media: ngene: Fix out-of-bounds bug in ngene_command_config_free_buf() 2021-07-28 14:35:45 +02:00
pluto2
pt1
pt3
saa7134 media: subdev: disallow ioctl for saa6588/davinci 2021-07-19 09:45:02 +02:00
saa7146 media: saa7146: fix array overflow in vidioc_s_audio() 2020-12-30 11:53:31 +01:00
saa7164 media: media/saa7164: fix saa7164_encoder_register() memory leak bugs 2021-05-11 14:47:24 +02:00
smipcie media: smipcie: fix interrupt handling and IR timeout 2021-03-04 11:38:34 +01:00
solo6x10 media: solo6x10: fix missing snd_card_free in error handling case 2020-12-30 11:53:13 +01:00
sta2x11 media: drivers: media: pci: sta2x11: fix Kconfig dependency on GPIOLIB 2021-05-11 14:47:24 +02:00
ttpci media: av7110: don't do float point math 2020-09-12 09:39:37 +02:00
tw68 media: tw68: use generic power management 2020-07-19 14:24:57 +02:00
tw686x
tw5864 media: tw5864: check status of tw5864_frameinterval_get 2020-08-29 08:16:16 +02:00
Kconfig
Makefile