{"id":"CVE-2026-40494","summary":"SAIL has heap buffer overflow in TGA RLE decoder — raw packet path missing bounds check","details":"SAIL is a cross-platform library for loading and saving images with support for animation, metadata, and ICC profiles. Prior to commit 45d48d1f2e8e0d73e80bc1fd5310cb57f4547302, the TGA codec's RLE decoder in `tga.c` has an asymmetric bounds check vulnerability. The run-packet path (line 297) correctly clamps the repeat count to the remaining buffer space, but the raw-packet path (line 305-311) has no equivalent bounds check. This allows writing up to 496 bytes of attacker-controlled data past the end of a heap buffer. Commit 45d48d1f2e8e0d73e80bc1fd5310cb57f4547302 patches the issue.","aliases":["GHSA-cp2j-rwh4-r46f"],"modified":"2026-08-12T16:24:06.762265Z","published":"2026-04-18T01:42:48.830Z","database_specific":{"cna_assigner":"GitHub_M","cwe_ids":["CWE-787"],"osv_generated_from":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/40xxx/CVE-2026-40494.json","unresolved_ranges":[{"extracted_events":[{"fixed":"45d48d1f2e8e0d73e80bc1fd5310cb57f4547302"}],"source":"AFFECTED_FIELD"}]},"references":[{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/40xxx/CVE-2026-40494.json"},{"type":"ADVISORY","url":"https://github.com/HappySeaFox/sail/security/advisories/GHSA-cp2j-rwh4-r46f"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-40494"},{"type":"FIX","url":"https://github.com/HappySeaFox/sail/commit/45d48d1f2e8e0d73e80bc1fd5310cb57f4547302"}],"affected":[{"ranges":[{"type":"GIT","repo":"https://github.com/happyseafox/sail","events":[{"introduced":"0"},{"fixed":"45d48d1f2e8e0d73e80bc1fd5310cb57f4547302"}],"database_specific":{"source":"REFERENCES"}}],"versions":["v0.9.10","v0.9.9","v0.9.8","v0.9.7","v0.9.6","v0.9.5","v0.9.4","v0.9.3","v0.9.2","v0.9.1","v0.9.0","v0.9.0-rc3","v0.9.0-rc2","v0.9.0-rc1","v0.9.0-pre23","v0.9.0-pre22","v0.9.0-pre21","v0.9.0-pre20","v0.9.0-pre19","v0.9.0-pre18","v0.9.0-pre17","v0.9.0-pre16","v0.9.0-pre15","v0.9.0-pre14","v0.9.0-pre13","v0.9.0-pre12","v0.9.0-pre11","v0.9.0-pre10","v0.9.0-pre9","v0.9.0-pre8","v0.9.0-pre7","v0.9.0-pre6","v0.9.0-pre5","v0.9.0-pre4","v0.9.0-pre3","v0.9.0-pre2","v0.9.0-pre1"],"database_specific":{"vanir_signatures":[{"source":"https://github.com/happyseafox/sail/commit/45d48d1f2e8e0d73e80bc1fd5310cb57f4547302","target":{"file":"src/sail-codecs/tga/tga.c","function":"sail_codec_load_frame_v8_tga"},"deprecated":false,"digest":{"function_hash":"53093494078232404761650251351059368321","length":1499},"id":"CVE-2026-40494-18d34287","signature_type":"Function","signature_version":"v1"},{"signature_type":"Line","signature_version":"v1","source":"https://github.com/happyseafox/sail/commit/45d48d1f2e8e0d73e80bc1fd5310cb57f4547302","target":{"file":"src/sail-codecs/tga/tga.c"},"deprecated":false,"digest":{"line_hashes":["39241758085884372679895500479298874553","105455294948266048399502294253244518005","298757288316339919525113857701334257012","244326695578487651973263346225703623465","177317350354915042912806298062618514707","31929580219483665129296930864733922851","67824274381534365815901296266485454814","268256080372315524520882720309475883796","333074141710635353878506192750459148821","23947894230954339720631273946794134902","141229528662973314111157840780891043108","258377247513508511955139190956034389172","284853991021044315985940746658249920410","286769217628676865083010570324710571132","306113357816595556236879816341660995154","256728268333143516337693377019938573166","53269493975263036937840712408954927514"],"threshold":0.9},"id":"CVE-2026-40494-4b18e1fe"}],"source":"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-40494.json","vanir_signatures_modified":"2026-08-12T16:24:06Z"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"}]}