Freeciv versions before 3.2.6 contain a heap buffer overflow in worklist_load() when processing savegame files with declared worklist lengths exceeding the fixed array bound of 64 elements. Attackers can craft malicious savegame files that write past the entries array into adjacent heap-allocated struct fields, potentially corrupting memory when a user or server operator loads the file.
{
"cna_assigner": "VulnCheck",
"cwe_ids": [
"CWE-122"
],
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/90xxx/CVE-2026-90556.json"
}{
"extracted_events": [
{
"range": [
{
"introduced": "0"
},
{
"fixed": "3.2.6"
}
],
"source": "AFFECTED_FIELD",
"strategy": "StandardRange"
},
{
"range": [
{
"fixed": "75ecde3e86ddf2fe775768450e9a290a4f4d4387"
}
],
"source": "REFERENCES_COMMIT"
},
{
"original_tag": "R3_2_6",
"range": [
{
"fixed": "2c4304c742aa81f1d73a5d604ed83237d57804a1"
}
],
"source": "REFERENCES_TAG"
}
]
}
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-90556.json"
[
{
"deprecated": false,
"digest": {
"line_hashes": [
"145569260306295611440174809323020358898",
"223795169114549000937506275359385185399",
"96087336979869061913287853794410278110",
"256682113116649861522241643137467803717",
"240913913477294091620435359600149161559",
"278840234656431935742604443681085718517",
"215072309832114462523449878007564490208",
"71111847577939048093964400627469600134"
],
"threshold": 0.9
},
"id": "CVE-2026-90556-3ff5203f",
"signature_type": "Line",
"signature_version": "v1",
"source": "https://github.com/freeciv/freeciv/commit/75ecde3e86ddf2fe775768450e9a290a4f4d4387",
"target": {
"file": "server/savegame/savegame3.c"
}
},
{
"deprecated": false,
"digest": {
"function_hash": "66802084563067900601456234301412794192",
"length": 918
},
"id": "CVE-2026-90556-5243dbe6",
"signature_type": "Function",
"signature_version": "v1",
"source": "https://github.com/freeciv/freeciv/commit/75ecde3e86ddf2fe775768450e9a290a4f4d4387",
"target": {
"file": "server/savegame/savegame2.c",
"function": "worklist_load"
}
},
{
"deprecated": false,
"digest": {
"function_hash": "66802084563067900601456234301412794192",
"length": 918
},
"id": "CVE-2026-90556-9d168daa",
"signature_type": "Function",
"signature_version": "v1",
"source": "https://github.com/freeciv/freeciv/commit/75ecde3e86ddf2fe775768450e9a290a4f4d4387",
"target": {
"file": "server/savegame/savegame3.c",
"function": "worklist_load"
}
},
{
"deprecated": false,
"digest": {
"function_hash": "115960299722060919881071125648431505203",
"length": 2379
},
"id": "CVE-2026-90556-a8c8c46a",
"signature_type": "Function",
"signature_version": "v1",
"source": "https://github.com/freeciv/freeciv/commit/75ecde3e86ddf2fe775768450e9a290a4f4d4387",
"target": {
"file": "server/savegame/savegame2.c",
"function": "sg_load_player_cities"
}
},
{
"deprecated": false,
"digest": {
"line_hashes": [
"145569260306295611440174809323020358898",
"223795169114549000937506275359385185399",
"96087336979869061913287853794410278110",
"256682113116649861522241643137467803717",
"240913913477294091620435359600149161559",
"257972707922949487644373089106459551248",
"216940496342591802850585554201551592836",
"17115285835530525128542121196818535273"
],
"threshold": 0.9
},
"id": "CVE-2026-90556-c7afc301",
"signature_type": "Line",
"signature_version": "v1",
"source": "https://github.com/freeciv/freeciv/commit/75ecde3e86ddf2fe775768450e9a290a4f4d4387",
"target": {
"file": "server/savegame/savegame2.c"
}
},
{
"deprecated": false,
"digest": {
"function_hash": "143163770932370964497566368866646862163",
"length": 2508
},
"id": "CVE-2026-90556-eb10d427",
"signature_type": "Function",
"signature_version": "v1",
"source": "https://github.com/freeciv/freeciv/commit/75ecde3e86ddf2fe775768450e9a290a4f4d4387",
"target": {
"file": "server/savegame/savegame3.c",
"function": "sg_load_player_cities"
}
}
]
"2026-10-21T10:48:58Z"