libsixel is a SIXEL encoder/decoder implementation derived from kmiya's sixel. Versions 1.8.7 and prior contain a Use-After-Free vulnerability via the loadgif() function in fromgif.c, where a single sixelframet object is reused across all frames of an animated GIF and gifinitframe() unconditionally frees and reallocates frame->pixels between frames without consulting the object's reference count. Because the public API explicitly provides sixelframeref() to retain a frame and sixelframegetpixels() to access the raw pixel buffer, a callback following this documented usage pattern will hold a dangling pointer after the second frame is decoded, resulting in a heap use-after-free confirmed by ASAN. Any application using sixelhelperloadimagefile() with a multi-frame callback to process user-supplied animated GIFs is affected, with a reliable crash as the minimum impact and potential for code execution. This issue has been fixed in version 1.8.7-r1.
{
"binaries": [
{
"binary_version": "1.8.2-2.1",
"binary_name": "libsixel-bin"
},
{
"binary_version": "1.8.2-2.1",
"binary_name": "libsixel-dev"
},
{
"binary_version": "1.8.2-2.1",
"binary_name": "libsixel-examples"
},
{
"binary_version": "1.8.2-2.1",
"binary_name": "libsixel1"
}
]
}{
"binaries": [
{
"binary_version": "1.10.3-3build1",
"binary_name": "libsixel-bin"
},
{
"binary_version": "1.10.3-3build1",
"binary_name": "libsixel-dev"
},
{
"binary_version": "1.10.3-3build1",
"binary_name": "libsixel-examples"
},
{
"binary_version": "1.10.3-3build1",
"binary_name": "libsixel1"
}
]
}