ืคื’ื™ืขื•ืช ื‘-Vim ืฉืžื•ื‘ื™ืœื” ืœื‘ื™ืฆื•ืข ืงื•ื“ ื‘ืขืช ืคืชื™ื—ืช ืงื•ื‘ืฅ ื–ื“ื•ื ื™

ื‘ืขื•ืจื›ื™ ื˜ืงืกื˜ ืžึถืจึถืฅ ะธ ื ื•ื‘ื™ื ืžืฆืืชื™ ืคื’ื™ืขื•ืช (CVE-2019-12735), ื”ืžืืคืฉืจ ืœื”ืคืขื™ืœ ืงื•ื“ ืฉืจื™ืจื•ืชื™ ื‘ืขืช ืคืชื™ื—ืช ืงื•ื‘ืฅ ืฉืชื•ื›ื ืŸ ื‘ืžื™ื•ื—ื“. ื”ื‘ืขื™ื” ืžืชืจื—ืฉืช ื›ืืฉืจ ืžืฆื‘ ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ืฉืœ modeline (": set modeline") ืคืขื™ืœ, ื”ืžืืคืฉืจ ืœืš ืœื”ื’ื“ื™ืจ ืืคืฉืจื•ื™ื•ืช ืขืจื™ื›ื” ื‘ืงื•ื‘ืฅ ื”ืžืขื•ื‘ื“. ืคื’ื™ืขื•ืช ืชื•ืงื ื” ื‘ืžื”ื“ื•ืจื•ืช
Vim 8.1.1365 ะธ ื ืื‘ื™ื 0.3.6.

ื ื™ืชืŸ ืœื”ืชืงื™ืŸ ืจืง ืžืกืคืจ ืžื•ื’ื‘ืœ ืฉืœ ืืคืฉืจื•ื™ื•ืช ื‘ืืžืฆืขื•ืช modeline. ืื ื‘ื™ื˜ื•ื™ ืžืฆื•ื™ืŸ ื›ืขืจืš ืื•ืคืฆื™ื”, ื”ื•ื ืžื‘ื•ืฆืข ื‘ืžืฆื‘ ืืจื’ื– ื—ื•ืœ, ื”ืžืืคืฉืจ ืจืง ืืช ื”ืคืขื•ืœื•ืช ื”ื‘ื˜ื•ื—ื•ืช ื”ืคืฉื•ื˜ื•ืช ื‘ื™ื•ืชืจ. ื‘ืžืงืจื” ื–ื”, ื”ืคืงื•ื“ื” ื”ื—ื•ืงื™ืช ื›ื•ืœืœืช ืืช ื”ืคืงื•ื“ื” ":source", ืฉื‘ื” ืืชื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘ืžืฉื ื” "!". ื›ื“ื™ ืœื”ืคืขื™ืœ ืคืงื•ื“ื•ืช ืฉืจื™ืจื•ืชื™ื•ืช ืžื”ืงื•ื‘ืฅ ืฉืฆื•ื™ืŸ. ืœืคื™ื›ืš, ื›ื“ื™ ืœื”ืคืขื™ืœ ืืช ื”ืงื•ื“, ืžืกืคื™ืง ืœืฆื™ื™ืŸ ื‘ืฉื•ืจืช ื”ืžื•ื“ืœ ื‘ื ื™ื™ื” ื›ืžื• "set foldexpr=execute('\:source! some_file'):". ื‘-Neovim ืืกื•ืจ ืœืงืจื•ื ืœ-execute, ืืš ื‘ืžืงื•ื ื–ืืช ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘-assert_fails.

ืœื“ื•ื’ืžื”, ื›ื“ื™ ืœื”ืคืขื™ืœ ืืช ื”ืคืงื•ื“ื” "uname -a", ืคืฉื•ื˜ ืคืชื— ืงื•ื‘ืฅ ื‘-Vim ืื• Neovim ืฉื”ืฉื•ืจื” ื”ืจืืฉื•ื ื” ืื• ื”ืื—ืจื•ื ื” ืฉืœื• ืื•ืžืจืช:

:!uname -a||ยป vi:fen:fdm=expr:fde=assert_fails(โ€œsource\!\ \%โ€):fdl=0:fdt=โ€

ื”ื—ื‘ืจื” "ืžืงื•ืจ! %" ื™ืงืจื ืืช ื”ืคืงื•ื“ื•ืช ืžื”ืงื•ื‘ืฅ ื”ื ื•ื›ื—ื™ ื•ื‘ื”ืชืื ืœื›ืš ื™ื‘ืฆืข ืืช ":!uname -a". ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ืจืฆืคื™ ื‘ืจื™ื—ื” ื›ื“ื™ ืœื”ืกืชื™ืจ ืฉื•ืจื” ื ืชื•ื ื” ืžื”ืคืœื˜ ืฉืœ ื›ืœื™ ื”ืฉื™ืจื•ืช ืœื—ืชื•ืœ. ืœืžืฉืœ, ื‘ื–ื” ืœื ืฆืœ ืื‘ ื˜ื™ืคื•ืก ื‘ืขืช ืคืชื™ื—ืช ืงื•ื‘ืฅ ื‘-vim, ื ื•ืฆืจ ื—ื™ื‘ื•ืจ ืจืฉืช ืขื ื’ื™ืฉืช ืžืขื˜ืคืช ืœืžืขืจื›ืช ืฉืœ ื”ืงื•ืจื‘ืŸ, ืืš ืงื•ื‘ืฅ ื–ื” ืœื ื™ืขื•ืจืจ ื—ืฉื“ ื‘ืขืช ื”ืคืœื˜ ืœืžืกื•ืฃ ื‘ืืžืฆืขื•ืช ื›ืœื™ ื”ืฉื™ืจื•ืช cat.

ืืชื” ื™ื›ื•ืœ ืœื‘ื“ื•ืง ืืช ื”ืคืขื™ืœื•ืช ืฉืœ ืžืฆื‘ modeline ืขื ื”ืคืงื•ื“ื” ":set modeline?". ื›ื“ื™ ืœื”ืฉื‘ื™ืช ืื•ืชื•, ืืชื” ื™ื›ื•ืœ ืœื”ื•ืกื™ืฃ ืืช ื”ืฉื•ืจื” "set nomodeline" ืœ-vimrc. ื‘ื”ืคืฆื•ืช ื”ื‘ืขื™ื” ืžืชื•ืงื ืช ื‘ ืจื”ืœ, SUSE/openSUSE, ืคื“ื•ืจื”, FreeBSD, ืื•ื‘ื•ื ื˜ื•, Arch Linux ะธ ALT. ื”ืคื’ื™ืขื•ืช ื ืฉืืจืช ืœืœื ืชื™ืงื•ืŸ ื“ื‘ื™ืืŸ (ื‘ื“ื’ื Debian ืžื•ืฉื‘ืช ื›ื‘ืจื™ืจืช ืžื—ื“ืœ, ื›ืš ืฉื”ืคื’ื™ืขื•ืช ืœื ืžื•ืคื™ืขื” ื‘ืžืฆื‘ ื‘ืจื™ืจืช ื”ืžื—ื“ืœ).

ืžืงื•ืจ: OpenNet.ru

ื”ื•ืกืคืช ืชื’ื•ื‘ื”