Patch 8.2.5072
Problem:    Using uninitialized value and freed memory in spell command.
Solution:   Initialize "attr".  Check for empty line early.
Files:      src/spell.c, src/testdir/test_spell_utf8.vim


*** ../vim-8.2.5071/src/spell.c 2022-05-20 14:10:45.324929965 +0100
--- src/spell.c 2022-06-09 19:53:29.204112786 +0100
***************
*** 1275,1281 ****
      char_u    *line;
      char_u    *p;
      char_u    *endp;
!     hlf_T     attr;
      int               len;
  #ifdef FEAT_SYN_HL
      int               has_syntax = syntax_present(wp);
--- 1275,1281 ----
      char_u    *line;
      char_u    *p;
      char_u    *endp;
!     hlf_T     attr = 0;
      int               len;
  #ifdef FEAT_SYN_HL
      int               has_syntax = syntax_present(wp);
***************
*** 1308,1313 ****
--- 1308,1315 ----
  
      while (!got_int)
      {
+       int empty_line;
+ 
        line = ml_get_buf(wp->w_buffer, lnum, FALSE);
  
        len = (int)STRLEN(line);
***************
*** 1340,1346 ****
        }
  
        // Copy the line into "buf" and append the start of the next line if
!       // possible.
        STRCPY(buf, line);
        if (lnum < wp->w_buffer->b_ml.ml_line_count)
            spell_cat_line(buf + STRLEN(buf),
--- 1342,1350 ----
        }
  
        // Copy the line into "buf" and append the start of the next line if
!       // possible.  Note: this ml_get_buf() may make "line" invalid, check
!       // for empty line first.
!       empty_line = *skipwhite(line) == NUL;
        STRCPY(buf, line);
        if (lnum < wp->w_buffer->b_ml.ml_line_count)
            spell_cat_line(buf + STRLEN(buf),
***************
*** 1487,1493 ****
            --capcol;
  
            // But after empty line check first word in next line
!           if (*skipwhite(line) == NUL)
                capcol = 0;
        }
  
--- 1491,1497 ----
            --capcol;
  
            // But after empty line check first word in next line
!           if (empty_line)
                capcol = 0;
        }
  
*** ../vim-8.2.5071/src/testdir/test_spell_utf8.vim     2022-05-23 
12:01:10.937519982 +0100
--- src/testdir/test_spell_utf8.vim     2022-06-09 19:49:50.030340909 +0100
***************
*** 802,806 ****
--- 802,821 ----
    call delete('Xtmpfile')
  endfunc
  
+ func Test_check_empty_line()
+   " This was using freed memory
+   enew
+   spellgood! fl
+   norm z=
+   norm yy
+   sil! norm P]svc
+   norm P]s
+ 
+   " set 'encoding' to clear the wordt list
+   set enc=latin1
+   set enc=utf-8
+   bwipe!
+ endfunc
+ 
  
  " vim: shiftwidth=2 sts=2 expandtab
*** ../vim-8.2.5071/src/version.c       2022-06-09 14:50:05.597785001 +0100
--- src/version.c       2022-06-09 19:20:44.454738354 +0100
***************
*** 736,737 ****
--- 736,739 ----
  {   /* Add new patch number below this line */
+ /**/
+     5072,
  /**/

-- 
   Arthur pulls Pin out.  The MONK blesses the grenade as ...
ARTHUR:  (quietly) One, two, five ...
GALAHAD: Three, sir!
ARTHUR:  Three.
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

 /// 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/20220609185857.C12B51C291C%40moolenaar.net.

Raspunde prin e-mail lui