annotate src/testdir/test_ga.vim @ 33664:06b59278bfcf v9.0.2070

patch 9.0.2070: [security] disallow setting env in restricted mode Commit: https://github.com/vim/vim/commit/6b89dd6a7257a1e2e9c7ea070b407bc4674a5118 Author: Christian Brabandt <cb@256bit.org> Date: Thu Oct 26 22:14:17 2023 +0200 patch 9.0.2070: [security] disallow setting env in restricted mode Problem: [security] disallow setting env in restricted mode Solution: Setting environment variables in restricted mode could potentially be used to execute shell commands. Disallow this. restricted mode: disable allow setting of environment variables Setting environment variables in restricted mode, may have some unwanted consequences. So, for example by setting $GCONV_PATH in restricted mode and then calling the iconv() function, one may be able to execute some unwanted payload, because the `iconv_open()` function internally uses the `$GCONV_PATH` variable to find its conversion data. So let's disable setting environment variables, even so this is no complete protection, since we are not clearing the existing environment. I tried a few ways but wasn't successful :( One could also argue to disable the iconv() function completely in restricted mode, but who knows what other API functions can be influenced by setting some other unrelated environment variables. So let's leave it as it is currently. closes: #13394 See: https://huntr.com/bounties/b0a2eda1-459c-4e36-98e6-0cc7d7faccfe/ Signed-off-by: Christian Brabandt <cb@256bit.org>
author Christian Brabandt <cb@256bit.org>
date Thu, 26 Oct 2023 22:30:03 +0200
parents 08940efa6b4e
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
10799
8c117418aea9 patch 8.0.0289: no test for "ga" and :ascii
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
1 " Test ga normal command, and :ascii Ex command.
21765
08940efa6b4e patch 8.2.1432: various inconsistencies in test files
Bram Moolenaar <Bram@vim.org>
parents: 20703
diff changeset
2
10799
8c117418aea9 patch 8.0.0289: no test for "ga" and :ascii
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
3 func Do_ga(c)
8c117418aea9 patch 8.0.0289: no test for "ga" and :ascii
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
4 call setline(1, a:c)
8c117418aea9 patch 8.0.0289: no test for "ga" and :ascii
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
5 let l:a = execute("norm 1goga")
8c117418aea9 patch 8.0.0289: no test for "ga" and :ascii
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
6 let l:b = execute("ascii")
8c117418aea9 patch 8.0.0289: no test for "ga" and :ascii
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
7 call assert_equal(l:a, l:b)
8c117418aea9 patch 8.0.0289: no test for "ga" and :ascii
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
8 return l:a
8c117418aea9 patch 8.0.0289: no test for "ga" and :ascii
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
9 endfunc
8c117418aea9 patch 8.0.0289: no test for "ga" and :ascii
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
10
8c117418aea9 patch 8.0.0289: no test for "ga" and :ascii
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
11 func Test_ga_command()
8c117418aea9 patch 8.0.0289: no test for "ga" and :ascii
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
12 new
8c117418aea9 patch 8.0.0289: no test for "ga" and :ascii
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
13 set display=uhex
8c117418aea9 patch 8.0.0289: no test for "ga" and :ascii
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
14 call assert_equal("\nNUL", Do_ga(''))
13359
81c348d40312 patch 8.0.1553: cannot see what digraph is used to insert a character
Christian Brabandt <cb@256bit.org>
parents: 10799
diff changeset
15 call assert_equal("\n<<01>> 1, Hex 01, Oct 001, Digr SH", Do_ga("\x01"))
81c348d40312 patch 8.0.1553: cannot see what digraph is used to insert a character
Christian Brabandt <cb@256bit.org>
parents: 10799
diff changeset
16 call assert_equal("\n<<09>> 9, Hex 09, Oct 011, Digr HT", Do_ga("\t"))
10799
8c117418aea9 patch 8.0.0289: no test for "ga" and :ascii
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
17
8c117418aea9 patch 8.0.0289: no test for "ga" and :ascii
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
18 set display=
8c117418aea9 patch 8.0.0289: no test for "ga" and :ascii
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
19 call assert_equal("\nNUL", Do_ga(''))
13359
81c348d40312 patch 8.0.1553: cannot see what digraph is used to insert a character
Christian Brabandt <cb@256bit.org>
parents: 10799
diff changeset
20 call assert_equal("\n<^A> 1, Hex 01, Oct 001, Digr SH", Do_ga("\x01"))
81c348d40312 patch 8.0.1553: cannot see what digraph is used to insert a character
Christian Brabandt <cb@256bit.org>
parents: 10799
diff changeset
21 call assert_equal("\n<^I> 9, Hex 09, Oct 011, Digr HT", Do_ga("\t"))
19231
b8fd7364befd patch 8.2.0174: various commands not completely tested
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
22 call assert_equal("\n<^@> 0, Hex 00, Octal 000", Do_ga("\n"))
10799
8c117418aea9 patch 8.0.0289: no test for "ga" and :ascii
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
23
8c117418aea9 patch 8.0.0289: no test for "ga" and :ascii
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
24 call assert_equal("\n<e> 101, Hex 65, Octal 145", Do_ga('e'))
8c117418aea9 patch 8.0.0289: no test for "ga" and :ascii
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
25
8c117418aea9 patch 8.0.0289: no test for "ga" and :ascii
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
26 " Test a few multi-bytes characters.
13359
81c348d40312 patch 8.0.1553: cannot see what digraph is used to insert a character
Christian Brabandt <cb@256bit.org>
parents: 10799
diff changeset
27 call assert_equal("\n<é> 233, Hex 00e9, Oct 351, Digr e'", Do_ga('é'))
81c348d40312 patch 8.0.1553: cannot see what digraph is used to insert a character
Christian Brabandt <cb@256bit.org>
parents: 10799
diff changeset
28 call assert_equal("\n<ẻ> 7867, Hex 1ebb, Oct 17273, Digr e2", Do_ga('ẻ'))
20703
ce55e65d7e41 patch 8.2.0905: test coverage could be better
Bram Moolenaar <Bram@vim.org>
parents: 19231
diff changeset
29 call assert_equal("\n<\U00012345> 74565, Hex 00012345, Octal 221505", Do_ga("\U00012345"))
10799
8c117418aea9 patch 8.0.0289: no test for "ga" and :ascii
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
30
8c117418aea9 patch 8.0.0289: no test for "ga" and :ascii
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
31 " Test with combining characters.
8c117418aea9 patch 8.0.0289: no test for "ga" and :ascii
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
32 call assert_equal("\n<e> 101, Hex 65, Octal 145 < ́> 769, Hex 0301, Octal 1401", Do_ga("e\u0301"))
8c117418aea9 patch 8.0.0289: no test for "ga" and :ascii
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
33 call assert_equal("\n<e> 101, Hex 65, Octal 145 < ́> 769, Hex 0301, Octal 1401 < ̱> 817, Hex 0331, Octal 1461", Do_ga("e\u0301\u0331"))
8c117418aea9 patch 8.0.0289: no test for "ga" and :ascii
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
34 call assert_equal("\n<e> 101, Hex 65, Octal 145 < ́> 769, Hex 0301, Octal 1401 < ̱> 817, Hex 0331, Octal 1461 < ̸> 824, Hex 0338, Octal 1470", Do_ga("e\u0301\u0331\u0338"))
19231
b8fd7364befd patch 8.2.0174: various commands not completely tested
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
35
b8fd7364befd patch 8.2.0174: various commands not completely tested
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
36 " When using Mac fileformat, CR instead of NL is used for line termination
b8fd7364befd patch 8.2.0174: various commands not completely tested
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
37 enew!
b8fd7364befd patch 8.2.0174: various commands not completely tested
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
38 set fileformat=mac
b8fd7364befd patch 8.2.0174: various commands not completely tested
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
39 call assert_equal("\n<^J> 10, Hex 0a, Oct 012, Digr NU", Do_ga("\r"))
b8fd7364befd patch 8.2.0174: various commands not completely tested
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
40
10799
8c117418aea9 patch 8.0.0289: no test for "ga" and :ascii
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
41 bwipe!
8c117418aea9 patch 8.0.0289: no test for "ga" and :ascii
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
42 endfunc
19231
b8fd7364befd patch 8.2.0174: various commands not completely tested
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
43
b8fd7364befd patch 8.2.0174: various commands not completely tested
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
44 " vim: shiftwidth=2 sts=2 expandtab