Christian Brabandt
26c11c5688
patch 9.0.2121: [security]: use-after-free in ex_substitute
...
Problem: [security]: use-after-free in ex_substitute
Solution: always allocate memory
closes : #13552
A recursive :substitute command could cause a heap-use-after free in Vim
(CVE-2023-48706).
The whole reproducible test is a bit tricky, I can only reproduce this
reliably when no previous substitution command has been used yet
(which is the reason, the test needs to run as first one in the
test_substitute.vim file) and as a combination of the `:~` command
together with a :s command that contains the special substitution atom `~\=`
which will make use of a sub-replace special atom and calls a vim script
function.
There was a comment in the existing :s code, that already makes the
`sub` variable allocate memory so that a recursive :s call won't be able
to cause any issues here, so this was known as a potential problem
already. But for the current test-case that one does not work, because
the substitution does not start with `\=` but with `~\=` (and since
there does not yet exist a previous substitution atom, Vim will simply
increment the `sub` pointer (which then was not allocated dynamically)
and later one happily use a sub-replace special expression (which could
then free the `sub` var).
The following commit fixes this, by making the sub var always using
allocated memory, which also means we need to free the pointer whenever
we leave the function. Since sub is now always an allocated variable,
we also do no longer need the sub_copy variable anymore, since this one
was used to indicated when sub pointed to allocated memory (and had
therefore to be freed on exit) and when not.
Github Security Advisory:
https://github.com/vim/vim/security/advisories/GHSA-c8qm-x72m-q53q
Signed-off-by: Christian Brabandt <cb@256bit.org >
2023-11-22 21:52:45 +01:00
Christian Brabandt
ac63787734
patch 9.0.2108: [security]: overflow with count for :s command
...
Problem: [security]: overflow with count for :s command
Solution: Abort the :s command if the count is too large
If the count after the :s command is larger than what fits into a
(signed) long variable, abort with e_value_too_large.
Adds a test with INT_MAX as count and verify it correctly fails.
It seems the return value on Windows using mingw compiler wraps around,
so the initial test using :s/./b/9999999999999999999999999990 doesn't
fail there, since the count is wrapping around several times and finally
is no longer larger than 2147483647. So let's just use 2147483647 in the
test, which hopefully will always cause a failure
Signed-off-by: Christian Brabandt <cb@256bit.org >
2023-11-16 22:04:37 +01:00
Christian Brabandt
ee17b6f70d
patch 9.0.1886: Various Typos
...
Problem: Various Typos
Solution: Fix Typos
This is a collection of typo related commits.
closes : #12753
closes : #13016
Co-authored-by: Adri Verhoef <a3@a3.xs4all.nl >
Co-authored-by: zeertzjq <zeertzjq@outlook.com >
Co-authored-by: Viktor Szépe <viktor@szepe.net >
Co-authored-by: nuid64 <lvkuzvesov@proton.me >
Co-authored-by: Meng Xiangzhuo <aumo@foxmail.com >
Co-authored-by: Dominique Pellé <dominique.pelle@gmail.com >
Signed-off-by: Christian Brabandt <cb@256bit.org >
2023-09-09 11:31:38 +02:00
Christian Brabandt
18d2709aa1
patch 9.0.1877: missing test for patch 9.0.1873
...
Problem: missing test for patch 9.0.1873
Solution: add a test trying to exchange windows
Add a test, making sure that switching windows is not allowed when
textlock is active, e.g. when running `:s/<pat>/\=func()/`
Signed-off-by: Christian Brabandt <cb@256bit.org >
2023-09-06 20:02:27 +02:00
Bram Moolenaar
a4467c433a
patch 9.0.1535: test commented out in a wrong way
...
Problem: Test commented out in a wrong way.
Solution: Use legacy script comment character.
2023-05-09 22:07:11 +01:00
Bram Moolenaar
916d6dd5b1
patch 9.0.1534: test for expanding "~" in substitute takes too long
...
Problem: Test for expanding "~" in substitute takes too long.
Solution: Disable the test for now.
2023-05-09 21:45:47 +01:00
Bram Moolenaar
ab9a2d884b
patch 9.0.1532: crash when expanding "~" in substitute causes very long text
...
Problem: Crash when expanding "~" in substitute causes very long text.
Solution: Limit the text length to MAXCOL.
2023-05-09 21:15:30 +01:00
Bram Moolenaar
94722c5107
patch 9.0.1257: code style is not check in test scripts
...
Problem: Code style is not check in test scripts.
Solution: Add basic code style check for test files.
2023-01-28 19:19:03 +00:00
Bram Moolenaar
3ac1d97a1d
patch 9.0.1145: invalid memory access with recursive substitute expression
...
Problem: Invalid memory access with recursive substitute expression.
Solution: Check the return value of vim_regsub().
2023-01-04 17:17:54 +00:00
Bram Moolenaar
cc762a48d4
patch 9.0.0947: invalid memory access in substitute with function
...
Problem: Invalid memory access in substitute with function that goes to
another file.
Solution: Check for text locked in CTRL-W gf.
2022-11-25 13:03:31 +00:00
Bram Moolenaar
56564964e6
patch 9.0.0719: too many delete() calls in tests
...
Problem: Too many delete() calls in tests.
Solution: Use deferred delete where possible.
2022-10-10 22:39:42 +01:00
Bram Moolenaar
73e28dcc61
patch 9.0.0491: no good reason to build without the float feature
...
Problem: No good reason to build without the float feature.
Solution: Remove configure check for float and "#ifdef FEAT_FLOAT".
2022-09-17 21:08:33 +01:00
zeertzjq
abd58d8aee
patch 9.0.0480: cannot use a :def varargs function with substitute()
...
Problem: Cannot use a :def varargs function with substitute().
Solution: Use has_varargs(). (closes #11146 )
2022-09-16 16:06:32 +01:00
zeertzjq
48db5dafec
patch 9.0.0476: varargs does not work for replacement function of substitute()
...
Problem: Varargs does not work for replacement function of substitute().
Solution: Check the varargs flag of the function. (closes #11142 )
2022-09-16 12:10:03 +01:00
Bram Moolenaar
a04f457a6c
patch 9.0.0457: substitute prompt does not highlight an empty match
...
Problem: Substitute prompt does not highlight an empty match.
Solution: Highlight at least one character.
2022-09-13 13:45:26 +01:00
Bram Moolenaar
b18b496997
patch 9.0.0363: common names in test files causes tests to be flaky
...
Problem: Common names in test files causes tests to be flaky.
Solution: Use more specific names.
2022-09-02 21:55:50 +01:00
Bram Moolenaar
44ddf19ec0
patch 8.2.5146: memory leak when substitute expression nests
...
Problem: Memory leak when substitute expression nests.
Solution: Use an array of expression results.
2022-06-21 22:15:25 +01:00
Bram Moolenaar
d6211a52ab
patch 8.2.5126: substitute may overrun destination buffer
...
Problem: Substitute may overrun destination buffer.
Solution: Disallow switching buffers in a substitute expression.
2022-06-18 19:48:14 +01:00
zeertzjq
3269efdf01
patch 8.2.5078: substitute test has a one second delay
...
Problem: Substitute test has a one second delay.
Solution: Use ":silent!". Add another test case. (closes #10558 )
2022-06-12 11:13:05 +01:00
Bram Moolenaar
be99042b03
patch 8.2.5044: command line test fails
...
Problem: Command line test fails.
Solution: Also beep when cmdline win can't be opened because of locks.
Make the test not beep. Make the test pass on MS-Windows.
2022-05-30 16:01:42 +01:00
Bram Moolenaar
71223e2db8
patch 8.2.5043: can open a cmdline window from a substitute expression
...
Problem: Can open a cmdline window from a substitute expression.
Solution: Disallow opening a command line window when text or buffer is
locked.
2022-05-30 15:23:09 +01:00
Bram Moolenaar
338f1fc0ee
patch 8.2.5023: substitute overwrites allocated buffer
...
Problem: Substitute overwrites allocated buffer.
Solution: Disallow undo when in a substitute command.
2022-05-26 15:56:23 +01:00
Bram Moolenaar
e2bd8600b8
patch 8.2.4977: memory access error when substitute expression changes window
...
Problem: Memory access error when substitute expression changes window.
Solution: Disallow changing window in substitute expression.
2022-05-18 13:11:57 +01:00
Yegappan Lakshmanan
5e877baf87
patch 8.2.4628: not enough testing for 2/3 letter substitute commands
...
Problem: Not enough testing for 2/3 letter substitute commands.
Solution: Add more tests. (Yegappan Lakshmanan, closes #10019 )
2022-03-25 21:19:26 +00:00
Bram Moolenaar
9fb7b42935
patch 8.2.4515: old subsitute syntax is still supported
...
Problem: Old subsitute syntax is still supported.
Solution: Disallow using backslash after ":s" in Vim9 script.
2022-03-05 21:13:26 +00:00
Bram Moolenaar
37f47958b8
patch 8.2.4253: using freed memory when substitute with function call
...
Problem: Using freed memory when substitute uses a recursive function call.
Solution: Make a copy of the substitute text.
2022-01-29 14:21:51 +00:00
Dominique Pelle
bfb2bb16bc
patch 8.2.3345: some code not covered by tests
...
Problem: Some code not covered by tests.
Solution: Add a few more tests. (Dominique Pellé, closes #8757 )
2021-08-14 21:11:51 +02:00
Bram Moolenaar
7a2217bedd
patch 8.2.2948: substitute() accepts a number but not a float expression
...
Problem: Substitute() accepts a number but not a float expression.
Solution: Also accept a float. (closes #8331 )
2021-06-06 12:33:49 +02:00
Bram Moolenaar
df36514a64
patch 8.2.2829: some comments are not correct or clear
...
Problem: Some comments are not correct or clear.
Solution: Adjust the comments. Add test for cursor position.
2021-05-03 20:01:45 +02:00
Bram Moolenaar
531be47ac5
patch 8.2.1736: failure to compile a pattern not tested much
...
Problem: Failure to compile a pattern not tested much.
Solution: Add tests where a pattern fails to compile. (Yegappan Lakshmanan,
closes #7004 )
2020-09-23 22:38:05 +02:00
Bram Moolenaar
8a0dcf4330
patch 8.2.1621: crash when using submatch(0, 1) in substitute()
...
Problem: Crash when using submatch(0, 1) in substitute().
Solution: Increment reference count. (closes #6887 )
2020-09-06 15:14:45 +02:00
Bram Moolenaar
e2e4075fad
patch 8.2.1593: tests do not check the error number properly
...
Problem: Tests do not check the error number properly.0
Solution: Add a colon after the error number. (closes #6869 )
2020-09-04 21:18:46 +02:00
Bram Moolenaar
9b7bf9e98f
patch 8.2.1183: assert_fails() checks the last error message
...
Problem: assert_fails() checks the last error message.
Solution: Check the first error, it is more relevant. Fix all the tests
that rely on the old behavior.
2020-07-11 22:14:59 +02:00
Bram Moolenaar
004a6781b3
patch 8.2.0540: regexp and other code not tested
...
Problem: Regexp and other code not tested.
Solution: Add more tests. (Yegappan Lakshmanan, closes #5904 )
2020-04-11 17:09:31 +02:00
Bram Moolenaar
ca68ae1311
patch 8.2.0482: channel and sandbox code not sufficiently tested
...
Problem: Channel and sandbox code not sufficiently tested.
Solution: Add more tests. (Yegappan Lakshmanan, closes #5855 )
2020-03-30 19:32:53 +02:00
Bram Moolenaar
0e05de4622
patch 8.2.0448: various functions not properly tested
...
Problem: Various functions not properly tested.
Solution: Add more tests, especially for failures. (Yegappan Lakshmanan,
closes #5843 )
2020-03-25 22:23:46 +01:00
Bram Moolenaar
9f6277bdde
patch 8.2.0243: insufficient code coverage for ex_docmd.c functions
...
Problem: Insufficient code coverage for ex_docmd.c functions.
Solution: Add more tests. (Yegappan Lakshmanan, closes #5618 )
2020-02-11 22:04:02 +01:00
Bram Moolenaar
07ada5ff2f
patch 8.2.0212: missing search/substitute pattern hardly tested
...
Problem: Missing search/substitute pattern hardly tested.
Solution: Add test_clear_search_pat() and tests. (Yegappan Lakshmanan,
closes #5579 )
2020-02-05 20:38:22 +01:00
Bram Moolenaar
ea3db914c0
patch 8.2.0197: some Ex commands not sufficiently tested
...
Problem: Some Ex commands not sufficiently tested.
Solution: Add more tests. (Yegappan Lakshmanan, closes #5565 )
2020-02-02 15:32:13 +01:00
Bram Moolenaar
5d98dc2a48
patch 8.2.0174: various commands not completely tested
...
Problem: Various commands not completely tested.
Solution: Add more test cases. (Yegappan Lakshmanan, closes #5551 )
2020-01-29 21:57:34 +01:00
Bram Moolenaar
4c054e9fb2
patch 8.1.2282: crash when passing many arguments through a partial
...
Problem: Crash when passing many arguments through a partial. (Andy
Massimino)
Solution: Check the number of arguments. (closes #5186 )
2019-11-10 00:13:50 +01:00
Bram Moolenaar
b0745b221d
patch 8.1.2280: crash when passing partial to substitute()
...
Problem: Crash when passing partial to substitute().
Solution: Take extra arguments into account. (closes #5186 )
2019-11-09 22:28:11 +01:00
Bram Moolenaar
bb26596242
patch 8.1.2236: ml_get error if pattern matches beyond last line
...
Problem: Ml_get error if pattern matches beyond last line.
Solution: Adjust position if needed. (Christian Brabandt, closes #5139 )
2019-10-31 04:38:36 +01:00
Bram Moolenaar
f6ed61e148
patch 8.1.2004: more functions can be used as methods
...
Problem: More functions can be used as methods.
Solution: Make various functions usable as a method.
2019-09-07 19:05:09 +02:00
Bram Moolenaar
f1699968ba
patch 8.1.1951: mouse double click test is a bit flaky
...
Problem: Mouse double click test is a bit flaky.
Solution: Add to list of flaky tests. Update a couple of comments.
2019-08-31 17:48:19 +02:00
Bram Moolenaar
80341bcd89
patch 8.1.1360: buffer left 'nomodifiable' after :substitute
...
Problem: Buffer left 'nomodifiable' after :substitute. (Ingo Karkat)
Solution: Save the value of 'modifiable' earlier' (Christian Brabandt,
closes #4403 )
2019-05-20 20:34:51 +02:00
Bram Moolenaar
6349e9411f
patch 8.1.1345: stuck in sandbox with ":s/../\=Function/gn"
...
Problem: Stuck in sandbox with ":s/../\=Function/gn".
Solution: Don't skip over code to restore sandbox. (Christian Brabandt)
2019-05-18 13:41:22 +02:00
Bram Moolenaar
c6b37db1ba
patch 8.1.1214: old style tests
...
Problem: Old style tests.
Solution: Move tests from test14 to new style test files. (Yegappan
Lakshmanan, closes #4308 )
2019-04-27 18:00:34 +02:00
Bram Moolenaar
0e97b94875
patch 8.1.1061: when substitute string throws error, substitute happens anyway
...
Problem: When substitute string throws error, substitute happens anyway.
Solution: Skip substitution when aborting. (closes #4161 )
2019-03-27 22:53:53 +01:00
Bram Moolenaar
d77aa4d22e
patch 8.1.0891: substitute command inssuficiently tested
...
Problem: Substitute command inssuficiently tested.
Solution: Add more test coverage. (Dominique Pelle)
2019-02-10 22:50:14 +01:00