In the Linux kernel, the following vulnerability has been resolved:
media: vivid: fix buffer overwrite when using > 32 buffers
The maximum number of buffers that can be requested was increased to 64 for the video capture queue. But video capture used a mustblank array that was still sized for 32 (VIDEOMAX_FRAME). This caused an out-of-bounds write when using buffer indices >= 32.
Create a new define MAXVIDCAPBUFFERS that is used to access the mustblank array and set maxnumbuffers for the video capture queue.
This solves a crash reported by:
https://bugzilla.kernel.org/show_bug.cgi?id=219258
[
{
"target": {
"file": "drivers/media/test-drivers/vivid/vivid-vid-cap.c"
},
"digest": {
"line_hashes": [
"110637603012845572473546374827697960507",
"300089619105097980172668620476768963475",
"339340464713037065110278362323740412379",
"117959912246070603715576877579282419186"
],
"threshold": 0.9
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@e6bacd8f2178b22859fe6d9f755f19dfcd9d3862",
"deprecated": false,
"id": "CVE-2024-50288-17b17016",
"signature_type": "Line"
},
{
"target": {
"function": "vivid_vid_cap_s_ctrl",
"file": "drivers/media/test-drivers/vivid/vivid-ctrls.c"
},
"digest": {
"length": 7036.0,
"function_hash": "266601714981826392351879472400798863322"
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@96d8569563916fe2f8fe17317e20e43f54f9ba4b",
"deprecated": false,
"id": "CVE-2024-50288-327a2947",
"signature_type": "Function"
},
{
"target": {
"function": "vivid_create_queue",
"file": "drivers/media/test-drivers/vivid/vivid-core.c"
},
"digest": {
"length": 1631.0,
"function_hash": "123544687811314724357603814910317199604"
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@96d8569563916fe2f8fe17317e20e43f54f9ba4b",
"deprecated": false,
"id": "CVE-2024-50288-38b55c29",
"signature_type": "Function"
},
{
"target": {
"function": "vid_cap_start_streaming",
"file": "drivers/media/test-drivers/vivid/vivid-vid-cap.c"
},
"digest": {
"length": 693.0,
"function_hash": "121396454760083658071221557369165072258"
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@96d8569563916fe2f8fe17317e20e43f54f9ba4b",
"deprecated": false,
"id": "CVE-2024-50288-400a5101",
"signature_type": "Function"
},
{
"target": {
"function": "vivid_vid_cap_s_ctrl",
"file": "drivers/media/test-drivers/vivid/vivid-ctrls.c"
},
"digest": {
"length": 7036.0,
"function_hash": "266601714981826392351879472400798863322"
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@e6bacd8f2178b22859fe6d9f755f19dfcd9d3862",
"deprecated": false,
"id": "CVE-2024-50288-5fc57ec7",
"signature_type": "Function"
},
{
"target": {
"file": "drivers/media/test-drivers/vivid/vivid-ctrls.c"
},
"digest": {
"line_hashes": [
"93372637180118438935230681119829311011",
"168976991788274547765341260614267348065",
"3267405178655541085588070025409292221",
"127134662753445931335637114401651773914"
],
"threshold": 0.9
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@96d8569563916fe2f8fe17317e20e43f54f9ba4b",
"deprecated": false,
"id": "CVE-2024-50288-7676e88e",
"signature_type": "Line"
},
{
"target": {
"file": "drivers/media/test-drivers/vivid/vivid-vid-cap.c"
},
"digest": {
"line_hashes": [
"110637603012845572473546374827697960507",
"300089619105097980172668620476768963475",
"339340464713037065110278362323740412379",
"117959912246070603715576877579282419186"
],
"threshold": 0.9
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@96d8569563916fe2f8fe17317e20e43f54f9ba4b",
"deprecated": false,
"id": "CVE-2024-50288-86549709",
"signature_type": "Line"
},
{
"target": {
"file": "drivers/media/test-drivers/vivid/vivid-core.c"
},
"digest": {
"line_hashes": [
"288075376881840189580915087658829850005",
"338357689624744780940156905758417107999",
"10426507019268700588988291806137876386",
"165228455571996568981878512771638918127"
],
"threshold": 0.9
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@96d8569563916fe2f8fe17317e20e43f54f9ba4b",
"deprecated": false,
"id": "CVE-2024-50288-8c5af750",
"signature_type": "Line"
},
{
"target": {
"file": "drivers/media/test-drivers/vivid/vivid-core.h"
},
"digest": {
"line_hashes": [
"231414829672239640553982839998646766001",
"81940210460872548253455911059551736906",
"151692223792343383932274033469101693931",
"298850104077253261828884990194293292736",
"147375725036978050555110380409451715581",
"99042541175326786363022689434193009812",
"281015275418194507832300015542613206419"
],
"threshold": 0.9
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@96d8569563916fe2f8fe17317e20e43f54f9ba4b",
"deprecated": false,
"id": "CVE-2024-50288-a0ae9cf2",
"signature_type": "Line"
},
{
"target": {
"function": "vivid_create_queue",
"file": "drivers/media/test-drivers/vivid/vivid-core.c"
},
"digest": {
"length": 1631.0,
"function_hash": "123544687811314724357603814910317199604"
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@e6bacd8f2178b22859fe6d9f755f19dfcd9d3862",
"deprecated": false,
"id": "CVE-2024-50288-a4364e40",
"signature_type": "Function"
},
{
"target": {
"file": "drivers/media/test-drivers/vivid/vivid-ctrls.c"
},
"digest": {
"line_hashes": [
"93372637180118438935230681119829311011",
"168976991788274547765341260614267348065",
"3267405178655541085588070025409292221",
"127134662753445931335637114401651773914"
],
"threshold": 0.9
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@e6bacd8f2178b22859fe6d9f755f19dfcd9d3862",
"deprecated": false,
"id": "CVE-2024-50288-a773a7a3",
"signature_type": "Line"
},
{
"target": {
"function": "vid_cap_start_streaming",
"file": "drivers/media/test-drivers/vivid/vivid-vid-cap.c"
},
"digest": {
"length": 693.0,
"function_hash": "121396454760083658071221557369165072258"
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@e6bacd8f2178b22859fe6d9f755f19dfcd9d3862",
"deprecated": false,
"id": "CVE-2024-50288-c1ca9207",
"signature_type": "Function"
},
{
"target": {
"file": "drivers/media/test-drivers/vivid/vivid-core.c"
},
"digest": {
"line_hashes": [
"288075376881840189580915087658829850005",
"338357689624744780940156905758417107999",
"10426507019268700588988291806137876386",
"165228455571996568981878512771638918127"
],
"threshold": 0.9
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@e6bacd8f2178b22859fe6d9f755f19dfcd9d3862",
"deprecated": false,
"id": "CVE-2024-50288-dbfa1252",
"signature_type": "Line"
},
{
"target": {
"file": "drivers/media/test-drivers/vivid/vivid-core.h"
},
"digest": {
"line_hashes": [
"231414829672239640553982839998646766001",
"81940210460872548253455911059551736906",
"151692223792343383932274033469101693931",
"298850104077253261828884990194293292736",
"147375725036978050555110380409451715581",
"99042541175326786363022689434193009812",
"281015275418194507832300015542613206419"
],
"threshold": 0.9
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@e6bacd8f2178b22859fe6d9f755f19dfcd9d3862",
"deprecated": false,
"id": "CVE-2024-50288-f283171b",
"signature_type": "Line"
}
]