diff options
Diffstat (limited to 'community/neovim/CVE-2016-1248.patch')
-rw-r--r-- | community/neovim/CVE-2016-1248.patch | 71 |
1 files changed, 0 insertions, 71 deletions
diff --git a/community/neovim/CVE-2016-1248.patch b/community/neovim/CVE-2016-1248.patch deleted file mode 100644 index 4a20d14028..0000000000 --- a/community/neovim/CVE-2016-1248.patch +++ /dev/null @@ -1,71 +0,0 @@ -From 177272f1f76565205c5c381bdf7dd020d7c5a5a8 Mon Sep 17 00:00:00 2001 -From: James McCoy <jamessan@jamessan.com> -Date: Sun, 20 Nov 2016 08:42:38 -0700 -Subject: [PATCH] vim-patch:8.0.0056 - -Problem: When setting 'filetype' there is no check for a valid name. -Solution: Only allow valid characters in 'filetype', 'syntax' and 'keymap'. - -https://github.com/vim/vim/commit/d0b5138ba4bccff8a744c99836041ef6322ed39a ---- - src/nvim/option.c | 33 ++++++++++++++++++++++++++++----- - 1 file changed, 28 insertions(+), 5 deletions(-) - -diff --git a/src/nvim/option.c b/src/nvim/option.c -index 5f338ea..24444ee 100644 ---- a/src/nvim/option.c -+++ b/src/nvim/option.c -@@ -2389,6 +2389,18 @@ static char *set_string_option(const int opt_idx, const char *const value, - return r; - } - -+/// Return true if "val" is a valid 'filetype' name. -+/// Also used for 'syntax' and 'keymap'. -+static bool valid_filetype(char_u *val) -+{ -+ for (char_u *s = val; *s != NUL; s++) { -+ if (!ASCII_ISALNUM(*s) && vim_strchr((char_u *)".-_", *s) == NULL) { -+ return false; -+ } -+ } -+ return true; -+} -+ - /* - * Handle string options that need some action to perform when changed. - * Returns NULL for success, or an error message for an error. -@@ -2620,8 +2632,12 @@ did_set_string_option ( - xfree(p_penc); - p_penc = p; - } else if (varp == &curbuf->b_p_keymap) { -- /* load or unload key mapping tables */ -- errmsg = keymap_init(); -+ if (!valid_filetype(*varp)) { -+ errmsg = e_invarg; -+ } else { -+ // load or unload key mapping tables -+ errmsg = keymap_init(); -+ } - - if (errmsg == NULL) { - if (*curbuf->b_p_keymap != NUL) { -@@ -3110,9 +3126,16 @@ did_set_string_option ( - else if (gvarp == &p_cino) { - /* TODO: recognize errors */ - parse_cino(curbuf); -- } -- /* Options that are a list of flags. */ -- else { -+ } else if (gvarp == &p_ft) { -+ if (!valid_filetype(*varp)) { -+ errmsg = e_invarg; -+ } -+ } else if (gvarp == &p_syn) { -+ if (!valid_filetype(*varp)) { -+ errmsg = e_invarg; -+ } -+ } else { -+ // Options that are a list of flags. - p = NULL; - if (varp == &p_ww) - p = (char_u *)WW_ALL; |