Vim is a greatly improved version of the good old UNIX editor Vi. Vim allows to redirect screen messages using the :redir ex command to register, variables and files. It also allows to show the contents of registers using the :registers or :display ex command. When redirecting the output of :display to a register, Vim will free the register content before storing the new content in the register. Now when redirecting the :display command to a register that is being displayed, Vim will free the content while shortly afterwards trying to access it, which leads to a use-after-free. Vim pre 9.1.1115 checks in the ex_display() function, that it does not try to redirect to a register while displaying this register at the same time. However this check is not complete, and so Vim does not check the + and * registers (which typically donate the X11/clipboard registers, and when a clipboard connection is not possible will fall back to use register 0 instead. In Patch 9.1.1115 Vim will therefore skip outputting to register zero when trying to redirect to the clipboard registers * or +. Users are advised to upgrade. There are no known workarounds for this vulnerability.
{
"cwe_ids": [
"CWE-416"
]
}[
{
"id": "CVE-2025-26603-1501013f",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Line",
"target": {
"file": "src/register.c"
},
"digest": {
"line_hashes": [
"2914180065361291748667840056452573159",
"272603678876125270797702967527619825025",
"7094656367675424948863862086483138133",
"113739267163280580096868967131872147064"
],
"threshold": 0.9
},
"source": "https://github.com/vim/vim/commit/c0f0e2380e5954f4a52a131bf6b8499838ad1dae"
},
{
"id": "CVE-2025-26603-a3193857",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Function",
"target": {
"file": "src/register.c",
"function": "ex_display"
},
"digest": {
"function_hash": "91414584533117410737956820078353910565",
"length": 3001.0
},
"source": "https://github.com/vim/vim/commit/c0f0e2380e5954f4a52a131bf6b8499838ad1dae"
},
{
"id": "CVE-2025-26603-dd35efe3",
"deprecated": false,
"signature_version": "v1",
"signature_type": "Line",
"target": {
"file": "src/version.c"
},
"digest": {
"line_hashes": [
"146200493773228420153804765641940418619",
"277754501638210839596090910220208759008",
"214331747468191585958802304022648654800",
"256973908508596794758510581738161957870"
],
"threshold": 0.9
},
"source": "https://github.com/vim/vim/commit/c0f0e2380e5954f4a52a131bf6b8499838ad1dae"
}
]