CVE-2024-39291 in Linux
Zusammenfassung
von VulDB • 14.05.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
drm/amdgpu: Puffergröße in gfx_v9_4_3_init_cp_compute_microcode() und rlc_microcode() korrigieren
Die Funktion gfx_v9_4_3_init_microcode in gfx_v9_4_3.c hat potenzielle Abschneideeffekte (Truncation) der Ausgabe bei der Verwendung der Funktion snprintf gemeldet. Das Problem war darauf zurückzuführen, dass die Größe des Puffers 'ucode_prefix' zu klein war, um die maximal mögliche Länge des darin geschriebenen Strings aufzunehmen.
Der zu schreibende String ist „amdgpu/%s_mec.bin“ oder „amdgpu/%s_rlc.bin“, wobei %s durch den Wert von 'chip_name' ersetzt wird. Die Länge dieses Strings ohne %s beträgt 16 Zeichen. Die Warnmeldung deutete darauf hin, dass 'chip_name' bis zu 29 Zeichen lang sein könnte, was zu einer Gesamtlänge von 45 Zeichen führt, die die Puffergröße von 30 Zeichen überschreitet.
Um dieses Problem zu lösen, wurde die Größe des 'ucode_prefix'-Puffers von 30 auf 15 reduziert. Dies stellt sicher, dass die maximal mögliche Länge des in den Puffer geschriebenen Strings dessen Größe nicht überschreitet und verhindert so potenzielle Pufferüberläufe und Abschneideeffekte.
Behebt die folgenden Probleme mit gcc W=1: drivers/gpu/drm/amd/amdgpu/gfx_v9_4_3.c: In Funktion ‚gfx_v9_4_3_early_init‘: drivers/gpu/drm/amd/amdgpu/gfx_v9_4_3.c:379:52: Warnung: Die Ausgabe des Direktiven ‚%s‘ kann beim Schreiben von bis zu 29 Bytes in einen Bereich der Größe 23 abgeschnitten werden [-Wformat-truncation=]
379 | snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_rlc.bin", chip_name); | ^~ ...... 439 | r = gfx_v9_4_3_init_rlc_microcode(adev, ucode_prefix); | ~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/gfx_v9_4_3.c:379:9: Hinweis: ‚snprintf‘-Ausgabe zwischen 16 und 45 Bytes in ein Ziel der Größe 30 379 | snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_rlc.bin", chip_name); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/gfx_v9_4_3.c:413:52: Warnung: Die Ausgabe des Direktiven ‚%s‘ kann beim Schreiben von bis zu 29 Bytes in einen Bereich der Größe 23 abgeschnitten werden [-Wformat-truncation=]
413 | snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_mec.bin", chip_name); | ^~ ...... 443 | r = gfx_v9_4_3_init_cp_compute_microcode(adev, ucode_prefix); | ~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/gfx_v9_4_3.c:413:9: Hinweis: ‚snprintf‘-Ausgabe zwischen 16 und 45 Bytes in ein Ziel der Größe 30 413 | snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_mec.bin", chip_name); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.