There exists a use after free/double free in libwebp. An attacker can use the ApplyFiltersAndEncode() function and loop through to free best.bw and assign best = trial pointer. The second loop will then return 0 because of an Out of memory error in VP8 encoder, the pointer is still assigned to trial and the AddressSanitizer will attempt a double free.
{
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2023/1xxx/CVE-2023-1999.json",
"cna_assigner": "Google",
"cwe_ids": [
"CWE-416"
],
"unresolved_ranges": [
{
"source": "AFFECTED_FIELD",
"extracted_events": [
{
"introduced": "0.4.2"
},
{
"fixed": "1.3.1"
},
{
"introduced": "0.4.2"
},
{
"fixed": "1.3.0-8-ga486d800"
}
]
}
]
}