Patch 8.2.3855
Problem:    Illegal memory access when displaying a blob.
Solution:   Append a NUL at the end. (Yegappan Lakshmanan, closes #9372)
Files:      src/blob.c, src/regexp_nfa.c, src/testdir/test_blob.vim,
            src/testdir/test_messages.vim


*** ../vim-8.2.3854/src/blob.c  2021-12-05 22:19:22.832153464 +0000
--- src/blob.c  2021-12-19 19:13:51.550933410 +0000
***************
*** 240,245 ****
--- 240,246 ----
        vim_snprintf((char *)numbuf, NUMBUFLEN, "%02X", (int)blob_get(blob, i));
        ga_concat(&ga, numbuf);
      }
+     ga_append(&ga, NUL);              // append a NUL at the end
      *tofree = ga.ga_data;
      return *tofree;
  }
*** ../vim-8.2.3854/src/regexp_nfa.c    2021-12-16 14:45:09.361563197 +0000
--- src/regexp_nfa.c    2021-12-19 19:13:51.554933405 +0000
***************
*** 2917,2936 ****
        ga_concat(indent, (char_u *)"| ");
      else
        ga_concat(indent, (char_u *)"  ");
!     ga_append(indent, '\0');
  
      nfa_print_state2(debugf, state->out, indent);
  
      // replace last part of indent for state->out1
      indent->ga_len -= 3;
      ga_concat(indent, (char_u *)"  ");
!     ga_append(indent, '\0');
  
      nfa_print_state2(debugf, state->out1, indent);
  
      // shrink indent
      indent->ga_len -= 3;
!     ga_append(indent, '\0');
  }
  
  /*
--- 2917,2936 ----
        ga_concat(indent, (char_u *)"| ");
      else
        ga_concat(indent, (char_u *)"  ");
!     ga_append(indent, NUL);
  
      nfa_print_state2(debugf, state->out, indent);
  
      // replace last part of indent for state->out1
      indent->ga_len -= 3;
      ga_concat(indent, (char_u *)"  ");
!     ga_append(indent, NUL);
  
      nfa_print_state2(debugf, state->out1, indent);
  
      // shrink indent
      indent->ga_len -= 3;
!     ga_append(indent, NUL);
  }
  
  /*
*** ../vim-8.2.3854/src/testdir/test_blob.vim   2021-12-03 13:56:57.195519128 
+0000
--- src/testdir/test_blob.vim   2021-12-19 19:18:53.962476770 +0000
***************
*** 680,684 ****
--- 680,691 ----
    call assert_equal(0z00010203, list2blob(range(4)))
  endfunc
  
+ " The following used to cause an out-of-bounds memory access
+ func Test_blob2string()
+   let v = '0z' .. repeat('01010101.', 444)
+   let v ..= '01'
+   exe 'let b = ' .. v
+   call assert_equal(v, string(b))
+ endfunc
  
  " vim: shiftwidth=2 sts=2 expandtab
*** ../vim-8.2.3854/src/testdir/test_messages.vim       2021-12-19 
11:06:19.666495254 +0000
--- src/testdir/test_messages.vim       2021-12-19 19:13:51.554933405 +0000
***************
*** 341,347 ****
  func Test_echo_string_partial()
    function CountSpaces()
    endfunction
!   echomsg function('CountSpaces', [#{aaaaaaaaaaa: v:false, bbbbbbbbbbbb: '', 
ccccccccccc: ['ab', 'cd']}])
  endfunc
  
  " vim: shiftwidth=2 sts=2 expandtab
--- 341,347 ----
  func Test_echo_string_partial()
    function CountSpaces()
    endfunction
!   call assert_equal("function('CountSpaces', [{'ccccccccccc': ['ab', 'cd'], 
'aaaaaaaaaaa': v:false, 'bbbbbbbbbbbb': ''}])", string(function('CountSpaces', 
[#{aaaaaaaaaaa: v:false, bbbbbbbbbbbb: '', ccccccccccc: ['ab', 'cd']}])))
  endfunc
  
  " vim: shiftwidth=2 sts=2 expandtab
*** ../vim-8.2.3854/src/version.c       2021-12-19 18:33:17.325954806 +0000
--- src/version.c       2021-12-19 19:15:21.218799756 +0000
***************
*** 751,752 ****
--- 751,754 ----
  {   /* Add new patch number below this line */
+ /**/
+     3855,
  /**/

-- 
ASCII stupid question, get a stupid ANSI.

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///                                                                      \\\
\\\        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/20211219192000.EADE01C0DCA%40moolenaar.net.

Raspunde prin e-mail lui