annotate src/testdir/test_backup.vim @ 33776:9503dc55b5ed v9.0.2108

patch 9.0.2108: [security]: overflow with count for :s command Commit: https://github.com/vim/vim/commit/ac63787734fda2e294e477af52b3bd601517fa78 Author: Christian Brabandt <cb@256bit.org> Date: Tue Nov 14 20:45:48 2023 +0100 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>
author Christian Brabandt <cb@256bit.org>
date Thu, 16 Nov 2023 22:15:10 +0100
parents ba5ca7c7d44c
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
14475
dddba3937532 patch 8.1.0251: using full path is not supported for 'backupdir'
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
1 " Tests for the backup function
dddba3937532 patch 8.1.0251: using full path is not supported for 'backupdir'
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
2
20812
d8628d75c47a patch 8.2.0958: not sufficient testing for buffer writing
Bram Moolenaar <Bram@vim.org>
parents: 14501
diff changeset
3 source check.vim
d8628d75c47a patch 8.2.0958: not sufficient testing for buffer writing
Bram Moolenaar <Bram@vim.org>
parents: 14501
diff changeset
4
14475
dddba3937532 patch 8.1.0251: using full path is not supported for 'backupdir'
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
5 func Test_backup()
14501
77968a364ec4 patch 8.1.0264: backup tests fail when CWD is in /tmp
Christian Brabandt <cb@256bit.org>
parents: 14483
diff changeset
6 set backup backupdir=. backupskip=
14475
dddba3937532 patch 8.1.0251: using full path is not supported for 'backupdir'
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
7 new
dddba3937532 patch 8.1.0251: using full path is not supported for 'backupdir'
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
8 call setline(1, ['line1', 'line2'])
dddba3937532 patch 8.1.0251: using full path is not supported for 'backupdir'
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
9 :f Xbackup.txt
dddba3937532 patch 8.1.0251: using full path is not supported for 'backupdir'
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
10 :w! Xbackup.txt
dddba3937532 patch 8.1.0251: using full path is not supported for 'backupdir'
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
11 " backup file is only created after
dddba3937532 patch 8.1.0251: using full path is not supported for 'backupdir'
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
12 " writing a second time (before overwriting)
dddba3937532 patch 8.1.0251: using full path is not supported for 'backupdir'
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
13 :w! Xbackup.txt
dddba3937532 patch 8.1.0251: using full path is not supported for 'backupdir'
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
14 let l = readfile('Xbackup.txt~')
dddba3937532 patch 8.1.0251: using full path is not supported for 'backupdir'
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
15 call assert_equal(['line1', 'line2'], l)
dddba3937532 patch 8.1.0251: using full path is not supported for 'backupdir'
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
16 bw!
14501
77968a364ec4 patch 8.1.0264: backup tests fail when CWD is in /tmp
Christian Brabandt <cb@256bit.org>
parents: 14483
diff changeset
17 set backup&vim backupdir&vim backupskip&vim
14475
dddba3937532 patch 8.1.0251: using full path is not supported for 'backupdir'
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
18 call delete('Xbackup.txt')
dddba3937532 patch 8.1.0251: using full path is not supported for 'backupdir'
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
19 call delete('Xbackup.txt~')
dddba3937532 patch 8.1.0251: using full path is not supported for 'backupdir'
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
20 endfunc
dddba3937532 patch 8.1.0251: using full path is not supported for 'backupdir'
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
21
21580
93dae47699fb patch 8.2.1340: some tests fail on Cirrus CI and/or with FreeBSD
Bram Moolenaar <Bram@vim.org>
parents: 20812
diff changeset
22 func Test_backup_backupskip()
93dae47699fb patch 8.2.1340: some tests fail on Cirrus CI and/or with FreeBSD
Bram Moolenaar <Bram@vim.org>
parents: 20812
diff changeset
23 set backup backupdir=. backupskip=*.txt
93dae47699fb patch 8.2.1340: some tests fail on Cirrus CI and/or with FreeBSD
Bram Moolenaar <Bram@vim.org>
parents: 20812
diff changeset
24 new
93dae47699fb patch 8.2.1340: some tests fail on Cirrus CI and/or with FreeBSD
Bram Moolenaar <Bram@vim.org>
parents: 20812
diff changeset
25 call setline(1, ['line1', 'line2'])
93dae47699fb patch 8.2.1340: some tests fail on Cirrus CI and/or with FreeBSD
Bram Moolenaar <Bram@vim.org>
parents: 20812
diff changeset
26 :f Xbackup.txt
93dae47699fb patch 8.2.1340: some tests fail on Cirrus CI and/or with FreeBSD
Bram Moolenaar <Bram@vim.org>
parents: 20812
diff changeset
27 :w! Xbackup.txt
93dae47699fb patch 8.2.1340: some tests fail on Cirrus CI and/or with FreeBSD
Bram Moolenaar <Bram@vim.org>
parents: 20812
diff changeset
28 " backup file is only created after
93dae47699fb patch 8.2.1340: some tests fail on Cirrus CI and/or with FreeBSD
Bram Moolenaar <Bram@vim.org>
parents: 20812
diff changeset
29 " writing a second time (before overwriting)
93dae47699fb patch 8.2.1340: some tests fail on Cirrus CI and/or with FreeBSD
Bram Moolenaar <Bram@vim.org>
parents: 20812
diff changeset
30 :w! Xbackup.txt
93dae47699fb patch 8.2.1340: some tests fail on Cirrus CI and/or with FreeBSD
Bram Moolenaar <Bram@vim.org>
parents: 20812
diff changeset
31 call assert_false(filereadable('Xbackup.txt~'))
93dae47699fb patch 8.2.1340: some tests fail on Cirrus CI and/or with FreeBSD
Bram Moolenaar <Bram@vim.org>
parents: 20812
diff changeset
32 bw!
93dae47699fb patch 8.2.1340: some tests fail on Cirrus CI and/or with FreeBSD
Bram Moolenaar <Bram@vim.org>
parents: 20812
diff changeset
33 set backup&vim backupdir&vim backupskip&vim
93dae47699fb patch 8.2.1340: some tests fail on Cirrus CI and/or with FreeBSD
Bram Moolenaar <Bram@vim.org>
parents: 20812
diff changeset
34 call delete('Xbackup.txt')
93dae47699fb patch 8.2.1340: some tests fail on Cirrus CI and/or with FreeBSD
Bram Moolenaar <Bram@vim.org>
parents: 20812
diff changeset
35 call delete('Xbackup.txt~')
93dae47699fb patch 8.2.1340: some tests fail on Cirrus CI and/or with FreeBSD
Bram Moolenaar <Bram@vim.org>
parents: 20812
diff changeset
36 endfunc
93dae47699fb patch 8.2.1340: some tests fail on Cirrus CI and/or with FreeBSD
Bram Moolenaar <Bram@vim.org>
parents: 20812
diff changeset
37
14475
dddba3937532 patch 8.1.0251: using full path is not supported for 'backupdir'
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
38 func Test_backup2()
14501
77968a364ec4 patch 8.1.0264: backup tests fail when CWD is in /tmp
Christian Brabandt <cb@256bit.org>
parents: 14483
diff changeset
39 set backup backupdir=.// backupskip=
14475
dddba3937532 patch 8.1.0251: using full path is not supported for 'backupdir'
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
40 new
dddba3937532 patch 8.1.0251: using full path is not supported for 'backupdir'
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
41 call setline(1, ['line1', 'line2', 'line3'])
dddba3937532 patch 8.1.0251: using full path is not supported for 'backupdir'
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
42 :f Xbackup.txt
dddba3937532 patch 8.1.0251: using full path is not supported for 'backupdir'
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
43 :w! Xbackup.txt
dddba3937532 patch 8.1.0251: using full path is not supported for 'backupdir'
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
44 " backup file is only created after
dddba3937532 patch 8.1.0251: using full path is not supported for 'backupdir'
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
45 " writing a second time (before overwriting)
dddba3937532 patch 8.1.0251: using full path is not supported for 'backupdir'
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
46 :w! Xbackup.txt
dddba3937532 patch 8.1.0251: using full path is not supported for 'backupdir'
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
47 sp *Xbackup.txt~
dddba3937532 patch 8.1.0251: using full path is not supported for 'backupdir'
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
48 call assert_equal(['line1', 'line2', 'line3'], getline(1,'$'))
21580
93dae47699fb patch 8.2.1340: some tests fail on Cirrus CI and/or with FreeBSD
Bram Moolenaar <Bram@vim.org>
parents: 20812
diff changeset
49 let f = expand('%')
14483
7fd8cb54da4a patch 8.1.0255: backup test fails when using shadow directory
Christian Brabandt <cb@256bit.org>
parents: 14475
diff changeset
50 call assert_match('%testdir%Xbackup.txt\~', f)
14475
dddba3937532 patch 8.1.0251: using full path is not supported for 'backupdir'
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
51 bw!
dddba3937532 patch 8.1.0251: using full path is not supported for 'backupdir'
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
52 bw!
dddba3937532 patch 8.1.0251: using full path is not supported for 'backupdir'
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
53 call delete('Xbackup.txt')
dddba3937532 patch 8.1.0251: using full path is not supported for 'backupdir'
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
54 call delete(f)
14501
77968a364ec4 patch 8.1.0264: backup tests fail when CWD is in /tmp
Christian Brabandt <cb@256bit.org>
parents: 14483
diff changeset
55 set backup&vim backupdir&vim backupskip&vim
14475
dddba3937532 patch 8.1.0251: using full path is not supported for 'backupdir'
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
56 endfunc
dddba3937532 patch 8.1.0251: using full path is not supported for 'backupdir'
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
57
dddba3937532 patch 8.1.0251: using full path is not supported for 'backupdir'
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
58 func Test_backup2_backupcopy()
14501
77968a364ec4 patch 8.1.0264: backup tests fail when CWD is in /tmp
Christian Brabandt <cb@256bit.org>
parents: 14483
diff changeset
59 set backup backupdir=.// backupcopy=yes backupskip=
14475
dddba3937532 patch 8.1.0251: using full path is not supported for 'backupdir'
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
60 new
dddba3937532 patch 8.1.0251: using full path is not supported for 'backupdir'
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
61 call setline(1, ['line1', 'line2', 'line3'])
dddba3937532 patch 8.1.0251: using full path is not supported for 'backupdir'
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
62 :f Xbackup.txt
dddba3937532 patch 8.1.0251: using full path is not supported for 'backupdir'
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
63 :w! Xbackup.txt
dddba3937532 patch 8.1.0251: using full path is not supported for 'backupdir'
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
64 " backup file is only created after
dddba3937532 patch 8.1.0251: using full path is not supported for 'backupdir'
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
65 " writing a second time (before overwriting)
dddba3937532 patch 8.1.0251: using full path is not supported for 'backupdir'
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
66 :w! Xbackup.txt
dddba3937532 patch 8.1.0251: using full path is not supported for 'backupdir'
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
67 sp *Xbackup.txt~
dddba3937532 patch 8.1.0251: using full path is not supported for 'backupdir'
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
68 call assert_equal(['line1', 'line2', 'line3'], getline(1,'$'))
21580
93dae47699fb patch 8.2.1340: some tests fail on Cirrus CI and/or with FreeBSD
Bram Moolenaar <Bram@vim.org>
parents: 20812
diff changeset
69 let f = expand('%')
14483
7fd8cb54da4a patch 8.1.0255: backup test fails when using shadow directory
Christian Brabandt <cb@256bit.org>
parents: 14475
diff changeset
70 call assert_match('%testdir%Xbackup.txt\~', f)
14475
dddba3937532 patch 8.1.0251: using full path is not supported for 'backupdir'
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
71 bw!
dddba3937532 patch 8.1.0251: using full path is not supported for 'backupdir'
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
72 bw!
dddba3937532 patch 8.1.0251: using full path is not supported for 'backupdir'
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
73 call delete('Xbackup.txt')
dddba3937532 patch 8.1.0251: using full path is not supported for 'backupdir'
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
74 call delete(f)
14501
77968a364ec4 patch 8.1.0264: backup tests fail when CWD is in /tmp
Christian Brabandt <cb@256bit.org>
parents: 14483
diff changeset
75 set backup&vim backupdir&vim backupcopy&vim backupskip&vim
14475
dddba3937532 patch 8.1.0251: using full path is not supported for 'backupdir'
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
76 endfunc
20812
d8628d75c47a patch 8.2.0958: not sufficient testing for buffer writing
Bram Moolenaar <Bram@vim.org>
parents: 14501
diff changeset
77
d8628d75c47a patch 8.2.0958: not sufficient testing for buffer writing
Bram Moolenaar <Bram@vim.org>
parents: 14501
diff changeset
78 " Test for using a non-existing directory as a backup directory
d8628d75c47a patch 8.2.0958: not sufficient testing for buffer writing
Bram Moolenaar <Bram@vim.org>
parents: 14501
diff changeset
79 func Test_non_existing_backupdir()
21580
93dae47699fb patch 8.2.1340: some tests fail on Cirrus CI and/or with FreeBSD
Bram Moolenaar <Bram@vim.org>
parents: 20812
diff changeset
80 set backupdir=./non_existing_dir backupskip=
30110
ba5ca7c7d44c patch 9.0.0391: using separate delete() call instead of writefile() 'D' flag
Bram Moolenaar <Bram@vim.org>
parents: 29950
diff changeset
81 call writefile(['line1'], 'Xbackupdir', 'D')
29950
c8b1a683323c patch 9.0.0313: using common name in tests leads to flaky tests
Bram Moolenaar <Bram@vim.org>
parents: 21580
diff changeset
82 new Xbackupdir
20812
d8628d75c47a patch 8.2.0958: not sufficient testing for buffer writing
Bram Moolenaar <Bram@vim.org>
parents: 14501
diff changeset
83 call assert_fails('write', 'E510:')
30110
ba5ca7c7d44c patch 9.0.0391: using separate delete() call instead of writefile() 'D' flag
Bram Moolenaar <Bram@vim.org>
parents: 29950
diff changeset
84
21580
93dae47699fb patch 8.2.1340: some tests fail on Cirrus CI and/or with FreeBSD
Bram Moolenaar <Bram@vim.org>
parents: 20812
diff changeset
85 set backupdir&vim backupskip&vim
20812
d8628d75c47a patch 8.2.0958: not sufficient testing for buffer writing
Bram Moolenaar <Bram@vim.org>
parents: 14501
diff changeset
86 endfunc
d8628d75c47a patch 8.2.0958: not sufficient testing for buffer writing
Bram Moolenaar <Bram@vim.org>
parents: 14501
diff changeset
87
d8628d75c47a patch 8.2.0958: not sufficient testing for buffer writing
Bram Moolenaar <Bram@vim.org>
parents: 14501
diff changeset
88 " vim: shiftwidth=2 sts=2 expandtab