aboutsummaryrefslogtreecommitdiffstats
path: root/community/neovim/CVE-2016-1248.patch
diff options
context:
space:
mode:
Diffstat (limited to 'community/neovim/CVE-2016-1248.patch')
-rw-r--r--community/neovim/CVE-2016-1248.patch71
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;