Mercurial > vim
view runtime/syntax/srt.vim @ 33865:8cdb69ea3711 v9.0.2143
patch 9.0.2143: [security]: buffer-overflow in ex_substitute
Commit: https://github.com/vim/vim/commit/abfa13ebe92d81aaf66669c428d767847b577453
Author: Christian Brabandt <cb@256bit.org>
Date: Thu Nov 30 11:32:18 2023 +0100
patch 9.0.2143: [security]: buffer-overflow in ex_substitute
Problem: [security]: buffer-overflow in ex_substitute
Solution: clear memory after allocating
When allocating the new_start pointer in ex_substitute() the memory
pointer points to some garbage that the following for loop in
ex_cmds.c:4743 confuses and causes it to accessing the new_start pointer
beyond it's size, leading to a buffer-overlow.
So fix this by using alloc_clear() instead of alloc(), which will
clear the memory by NUL and therefore cause the loop to terminate
correctly.
Reported by @henices, thanks!
closes: #13596
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sun, 10 Dec 2023 15:16:05 +0100 |
parents | 0827d3d6d8c0 |
children |
line wrap: on
line source
" Vim syntax file " Language: SubRip " Maintainer: ObserverOfTime <chronobserver@disroot.org> " Filenames: *.srt " Last Change: 2022 Sep 12 if exists('b:current_syntax') finish endif syn spell toplevel syn cluster srtSpecial contains=srtBold,srtItalics,srtStrikethrough,srtUnderline,srtFont,srtTag,srtEscape " Number syn match srtNumber /^\d\+$/ contains=@NoSpell " Range syn match srtRange /\d\d:\d\d:\d\d[,.]\d\d\d --> \d\d:\d\d:\d\d[,.]\d\d\d/ skipwhite contains=srtArrow,srtTime nextgroup=srtCoordinates syn match srtArrow /-->/ contained contains=@NoSpell syn match srtTime /\d\d:\d\d:\d\d[,.]\d\d\d/ contained contains=@NoSpell syn match srtCoordinates /X1:\d\+ X2:\d\+ Y1:\d\+ Y2:\d\+/ contained contains=@NoSpell " Bold syn region srtBold matchgroup=srtFormat start=+<b>+ end=+</b>+ contains=@srtSpecial syn region srtBold matchgroup=srtFormat start=+{b}+ end=+{/b}+ contains=@srtSpecial " Italics syn region srtItalics matchgroup=srtFormat start=+<i>+ end=+</i>+ contains=@srtSpecial syn region srtItalics matchgroup=srtFormat start=+{i}+ end=+{/i}+ contains=@srtSpecial " Strikethrough syn region srtStrikethrough matchgroup=srtFormat start=+<s>+ end=+</s>+ contains=@srtSpecial syn region srtStrikethrough matchgroup=srtFormat start=+{s}+ end=+{/s}+ contains=@srtSpecial " Underline syn region srtUnderline matchgroup=srtFormat start=+<u>+ end=+</u>+ contains=@srtSpecial syn region srtUnderline matchgroup=srtFormat start=+{u}+ end=+{/u}+ contains=@srtSpecial " Font syn region srtFont matchgroup=srtFormat start=+<font[^>]\{-}>+ end=+</font>+ contains=@srtSpecial " ASS tags syn match srtTag /{\\[^}]\{1,}}/ contains=@NoSpell " Special characters syn match srtEscape /\\[nNh]/ contains=@NoSpell hi def link srtArrow Delimiter hi def link srtCoordinates Label hi def link srtEscape SpecialChar hi def link srtFormat Special hi def link srtNumber Number hi def link srtTag PreProc hi def link srtTime String hi srtBold cterm=bold gui=bold hi srtItalics cterm=italic gui=italic hi srtStrikethrough cterm=strikethrough gui=strikethrough hi srtUnderline cterm=underline gui=underline let b:current_syntax = 'srt'