summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDominique Pelle <dominique.pelle@gmail.com>2022-01-12 15:24:40 +0000
committerBram Moolenaar <Bram@vim.org>2022-01-12 15:24:40 +0000
commitf5d639a8af719eb8ecb141b5c0890627e4d83134 (patch)
tree2890e8ac277b77edd6cb76464a54ff30af478d3f
parent5d9826973d9f4c6ffbb5648676bb628660c62906 (diff)
patch 8.2.4070: using uninitialized memory when reading empty filev8.2.4070
Problem: Using uninitialized memory when reading empty file. Solution: Check for empty file before checking for NL. (Dominique Pellé, closes #9511)
-rw-r--r--src/filepath.c2
-rw-r--r--src/testdir/test_eval_stuff.vim7
-rw-r--r--src/version.c2
3 files changed, 10 insertions, 1 deletions
diff --git a/src/filepath.c b/src/filepath.c
index eb5b8e0502..add74b4707 100644
--- a/src/filepath.c
+++ b/src/filepath.c
@@ -1796,7 +1796,7 @@ read_file_or_blob(typval_T *argvars, typval_T *rettv, int always_blob)
p < buf + readlen || (readlen <= 0 && (prevlen > 0 || binary));
++p)
{
- if (*p == '\n' || readlen <= 0)
+ if (readlen <= 0 || *p == '\n')
{
listitem_T *li;
char_u *s = NULL;
diff --git a/src/testdir/test_eval_stuff.vim b/src/testdir/test_eval_stuff.vim
index ac9589d24c..ff6d695f62 100644
--- a/src/testdir/test_eval_stuff.vim
+++ b/src/testdir/test_eval_stuff.vim
@@ -93,6 +93,13 @@ func Test_readfile_binary()
call delete('XReadfile_bin')
endfunc
+func Test_readfile_binary_empty()
+ call writefile([], 'Xempty-file')
+ " This used to compare uninitialized memory in Vim <= 8.2.4065
+ call assert_equal([''], readfile('Xempty-file', 'b'))
+ call delete('Xempty-file')
+endfunc
+
func Test_readfile_bom()
call writefile(["\ufeffFOO", "FOO\ufeffBAR"], 'XReadfile_bom')
call assert_equal(['FOO', 'FOOBAR'], readfile('XReadfile_bom'))
diff --git a/src/version.c b/src/version.c
index a931516a9a..8c77e2efb0 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 4070,
+/**/
4069,
/**/
4068,