comparison src/scriptfile.c @ 28242:5bf82b918cb2 v8.2.4647

patch 8.2.4647: "source" can read past end of copied line Commit: https://github.com/vim/vim/commit/2bdad6126778f907c0b98002bfebf0e611a3f5db Author: Bram Moolenaar <Bram@vim.org> Date: Tue Mar 29 19:52:12 2022 +0100 patch 8.2.4647: "source" can read past end of copied line Problem: "source" can read past end of copied line. Solution: Add a terminating NUL.
author Bram Moolenaar <Bram@vim.org>
date Tue, 29 Mar 2022 21:00:04 +0200
parents 2b595cee4c85
children 4b322951ebac
comparison
equal deleted inserted replaced
28241:56e2b05a232f 28242:5bf82b918cb2
1916 { 1916 {
1917 if (sp->buf_lnum >= sp->buflines.ga_len) 1917 if (sp->buf_lnum >= sp->buflines.ga_len)
1918 break; // all the lines are processed 1918 break; // all the lines are processed
1919 ga_concat(&ga, ((char_u **)sp->buflines.ga_data)[sp->buf_lnum]); 1919 ga_concat(&ga, ((char_u **)sp->buflines.ga_data)[sp->buf_lnum]);
1920 sp->buf_lnum++; 1920 sp->buf_lnum++;
1921 if (ga_grow(&ga, 1) == FAIL)
1922 break;
1921 buf = (char_u *)ga.ga_data; 1923 buf = (char_u *)ga.ga_data;
1924 buf[ga.ga_len++] = NUL;
1922 } 1925 }
1923 else 1926 else
1924 { 1927 {
1925 buf = (char_u *)ga.ga_data; 1928 buf = (char_u *)ga.ga_data;
1926 if (fgets((char *)buf + ga.ga_len, ga.ga_maxlen - ga.ga_len, 1929 if (fgets((char *)buf + ga.ga_len, ga.ga_maxlen - ga.ga_len,