mirror of
https://github.com/neovim/neovim.git
synced 2025-09-22 11:18:19 +00:00
vim-patch:9.1.0181: no overflow check for string formatting (#27863)
Problem: no overflow check for string formatting
Solution: Check message formatting function for overflow.
(Chris van Willegen)
closes: vim/vim#13799
c35fc03dbd
Co-authored-by: Christ van Willegen <cvwillegen@gmail.com>
This commit is contained in:
@@ -105,67 +105,6 @@ func Test_printf_pos_misc()
|
||||
END
|
||||
call CheckLegacyAndVim9Success(lines)
|
||||
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$d%2$d', 1, 3, 4)"], "E767:")
|
||||
|
||||
call CheckLegacyAndVim9Failure(["call printf('%2$d%d', 1, 3)"], "E1500:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%d%2$d', 1, 3)"], "E1500:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%2$*1$d%d', 1, 3)"], "E1500:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%d%2$*1$d', 1, 3)"], "E1500:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%2$.*1$d%d', 1, 3)"], "E1500:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%d%2$.*1$d', 1, 3)"], "E1500:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$%')"], "E1500:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$')"], "E1500:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$_')"], "E1500:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$*3$.*d', 3)"], "E1500:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$*.*2$d', 3)"], "E1500:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$*.*d', 3)"], "E1500:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%*.*1$d', 3)"], "E1500:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%*1$.*d', 3)"], "E1500:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%*1$.*1$d', 3)"], "E1500:")
|
||||
|
||||
call CheckLegacyAndVim9Failure(["call printf('%2$d', 3, 3)"], "E1501:")
|
||||
|
||||
call CheckLegacyAndVim9Failure(["call printf('%2$*1$d %1$ld', 3, 3)"], "E1502:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$s %1$*1$d', 3)"], "E1502:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$p %1$*1$d', 3)"], "E1502:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$f %1$*1$d', 3)"], "E1502:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$lud %1$*1$d', 3)"], "E1502:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$llud %1$*1$d', 3)"], "E1502:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$lld %1$*1$d', 3)"], "E1502:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$s %1$*1$d', 3)"], "E1502:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$c %1$*1$d', 3)"], "E1502:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$ld %1$*1$d', 3)"], "E1502:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$ld %2$*1$d', 3, 3)"], "E1502:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$*1$ld', 3)"], "E1502:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$*1$.*1$ld', 3)"], "E1502:")
|
||||
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$d%2$d', 3)"], "E1503:")
|
||||
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$d %1$s', 3)"], "E1504:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$ld %1$s', 3)"], "E1504:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$ud %1$d', 3)"], "E1504:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$s %1$f', 3.0)"], "E1504:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$*1$d %1$ld', 3)"], "E1504:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$s %1$d', 3)"], "E1504:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$p %1$d', 3)"], "E1504:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$f %1$d', 3)"], "E1504:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$lud %1$d', 3)"], "E1504:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$llud %1$d', 3)"], "E1504:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$lld %1$d', 3)"], "E1504:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$s %1$d', 3)"], "E1504:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$c %1$d', 3)"], "E1504:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$ld %1$d', 3)"], "E1504:")
|
||||
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$.2$d', 3)"], "E1505:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%01$d', 3)"], "E1505:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%01$0d', 3)"], "E1505:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$*2d', 3)"], "E1505:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$*3.*2$d', 3)"], "E1505:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$*3$.2$d', 3)"], "E1505:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$*3$.*2d', 3)"], "E1505:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$1$.5d', 5)"], "E1505:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$5.1$d', 5)"], "E1505:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$1$.1$d', 5)"], "E1505:")
|
||||
endfunc
|
||||
|
||||
func Test_printf_pos_float()
|
||||
@@ -287,8 +226,6 @@ func Test_printf_pos_float()
|
||||
call assert_equal("str2float('nan')", printf('%1$S', -0.0 / 0.0))
|
||||
END
|
||||
call CheckLegacyAndVim9Success(lines)
|
||||
|
||||
call CheckLegacyAndVim9Failure(['echo printf("%f", "a")'], 'E807:')
|
||||
endfunc
|
||||
|
||||
func Test_printf_pos_errors()
|
||||
@@ -299,6 +236,111 @@ func Test_printf_pos_errors()
|
||||
call CheckLegacyAndVim9Failure(['echo printf("%1$s")'], 'E1503:')
|
||||
call CheckLegacyAndVim9Failure(['echo printf("%1$d", 1.2)'], 'E805:')
|
||||
call CheckLegacyAndVim9Failure(['echo printf("%1$f")'], 'E1503:')
|
||||
|
||||
call CheckLegacyAndVim9Failure(['echo printf("%f", "a")'], 'E807:')
|
||||
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$d%2$d', 1, 3, 4)"], "E767:")
|
||||
|
||||
call CheckLegacyAndVim9Failure(["call printf('%2$d%d', 1, 3)"], "E1500:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%d%2$d', 1, 3)"], "E1500:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%2$*1$d%d', 1, 3)"], "E1500:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%d%2$*1$d', 1, 3)"], "E1500:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%2$.*1$d%d', 1, 3)"], "E1500:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%d%2$.*1$d', 1, 3)"], "E1500:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$%')"], "E1500:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$')"], "E1500:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$_')"], "E1500:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$*3$.*d', 3)"], "E1500:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$*.*2$d', 3)"], "E1500:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$*.*d', 3)"], "E1500:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%*.*1$d', 3)"], "E1500:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%*1$.*d', 3)"], "E1500:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%*1$.*1$d', 3)"], "E1500:")
|
||||
|
||||
call CheckLegacyAndVim9Failure(["call printf('%2$d', 3, 3)"], "E1501:")
|
||||
|
||||
call CheckLegacyAndVim9Failure(["call printf('%2$*1$d %1$ld', 3, 3)"], "E1502:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$s %1$*1$d', 3)"], "E1502:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$p %1$*1$d', 3)"], "E1502:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$f %1$*1$d', 3)"], "E1502:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$lud %1$*1$d', 3)"], "E1502:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$llud %1$*1$d', 3)"], "E1502:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$lld %1$*1$d', 3)"], "E1502:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$s %1$*1$d', 3)"], "E1502:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$c %1$*1$d', 3)"], "E1502:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$ld %1$*1$d', 3)"], "E1502:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$ld %2$*1$d', 3, 3)"], "E1502:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$*1$ld', 3)"], "E1502:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$*1$.*1$ld', 3)"], "E1502:")
|
||||
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$d%2$d', 3)"], "E1503:")
|
||||
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$d %1$s', 3)"], "E1504:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$ld %1$s', 3)"], "E1504:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$ud %1$d', 3)"], "E1504:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$s %1$f', 3.0)"], "E1504:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$*1$d %1$ld', 3)"], "E1504:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$s %1$d', 3)"], "E1504:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$p %1$d', 3)"], "E1504:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$f %1$d', 3)"], "E1504:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$lud %1$d', 3)"], "E1504:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$llud %1$d', 3)"], "E1504:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$lld %1$d', 3)"], "E1504:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$s %1$d', 3)"], "E1504:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$c %1$d', 3)"], "E1504:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$ld %1$d', 3)"], "E1504:")
|
||||
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$.2$d', 3)"], "E1505:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%01$d', 3)"], "E1505:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%01$0d', 3)"], "E1505:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$*2d', 3)"], "E1505:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$*3.*2$d', 3)"], "E1505:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$*3$.2$d', 3)"], "E1505:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$*3$.*2d', 3)"], "E1505:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$1$.5d', 5)"], "E1505:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$5.1$d', 5)"], "E1505:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$1$.1$d', 5)"], "E1505:")
|
||||
|
||||
call CheckLegacyAndVim9Failure(["call printf('%.123456789$d', 5)"], "E1510:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%.123456789d', 5)"], "E1510:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%123456789$d', 5)"], "E1510:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%123456789d', 5)"], "E1510:")
|
||||
|
||||
call CheckLegacyAndVim9Failure(["call printf('%123456789$5.5d', 5)"], "E1510:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$123456789.5d', 5)"], "E1510:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$5.123456789d', 5)"], "E1510:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%123456789$987654321.5d', 5)"], "E1510:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$123456789.987654321d', 5)"], "E1510:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%123456789$5.987654321d', 5)"], "E1510:")
|
||||
|
||||
call CheckLegacyAndVim9Failure(["call printf('%123456789$*1$.5d', 5)"], "E1510:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$*123456789$.5d', 5)"], "E1510:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$*1$.123456789d', 5)"], "E1510:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%123456789$*987654321$.5d', 5)"], "E1510:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$*123456789$.987654321d', 5)"], "E1510:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%123456789$*1$.987654321d', 5)"], "E1510:")
|
||||
|
||||
call CheckLegacyAndVim9Failure(["call printf('%123456789$5.*1$d', 5)"], "E1510:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$123456789.*1$d', 5)"], "E1510:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$5.*123456789$d', 5)"], "E1510:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%123456789$987654321.*1$d', 5)"], "E1510:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$123456789.*987654321$d', 5)"], "E1510:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%123456789$5.*987654321$d', 5)"], "E1510:")
|
||||
|
||||
call CheckLegacyAndVim9Failure(["call printf('%123456789$*1$.*1$d', 5)"], "E1510:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$*123456789$.*1$d', 5)"], "E1510:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$*1$.*123456789d', 5)"], "E1510:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%123456789$*987654321$.*1$d', 5)"], "E1510:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$*123456789$.*987654321$d', 5)"], "E1510:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%123456789$*1$.*987654321$d', 5)"], "E1510:")
|
||||
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$*2$.*1$d', 5, 9999)"], "E1510:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$*1$.*2$d', 5, 9999)"], "E1510:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%2$*3$.*1$d', 5, 9123, 9321)"], "E1510:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$*2$.*3$d', 5, 9123, 9321)"], "E1510:")
|
||||
call CheckLegacyAndVim9Failure(["call printf('%2$*1$.*3$d', 5, 9123, 9312)"], "E1510:")
|
||||
|
||||
call CheckLegacyAndVim9Failure(["call printf('%1$*2$d', 5, 9999)"], "E1510:")
|
||||
endfunc
|
||||
|
||||
func Test_printf_pos_64bit()
|
||||
|
Reference in New Issue
Block a user