4 From: Bram Moolenaar <Bram@moolenaar.net>
6 Content-Type: text/plain; charset=ISO-8859-1
7 Content-Transfer-Encoding: 8bit
11 Problem: Using strcpy() with arguments that overlap.
12 Solution: Use mch_memmove() instead.
13 Files: src/buffer.c, src/charset.c, src/eval.c, src/ex_getln.c,
14 src/misc1.c, src/regexp.c, src/termlib.c
17 *** ../vim-7.1.054/src/buffer.c Tue Jun 19 15:40:51 2007
18 --- src/buffer.c Sun Aug 5 16:14:03 2007
22 for (e = s; *e != ':' && *e != NUL; ++e)
23 if (e[0] == '\\' && e[1] == ':')
30 for (e = s; *e != ':' && *e != NUL; ++e)
31 if (e[0] == '\\' && e[1] == ':')
32 ! mch_memmove(e, e + 1, STRLEN(e));
36 *** ../vim-7.1.054/src/charset.c Tue Mar 27 12:41:45 2007
37 --- src/charset.c Sun Aug 5 21:53:44 2007
51 ! mch_memmove(p, p + 1, STRLEN(p));
55 *** ../vim-7.1.054/src/eval.c Fri Jul 27 21:32:13 2007
56 --- src/eval.c Sun Aug 5 16:25:03 2007
60 /* Shorten "remain". */
62 ! STRCPY(remain, q - 1);
68 /* Shorten "remain". */
70 ! mch_memmove(remain, q - 1, STRLEN(q - 1) + 1);
74 *** ../vim-7.1.054/src/ex_getln.c Sat Jul 28 14:21:04 2007
75 --- src/ex_getln.c Sun Aug 5 21:55:56 2007
81 ! STRCPY(pat + i, pat + i + 3);
82 if (xp->xp_backslash == XP_BS_ONE
84 ! STRCPY(pat + i, pat + i + 1);
92 ! mch_memmove(pat + i, pat + i + 3,
93 ! STRLEN(pat + i + 3) + 1);
94 if (xp->xp_backslash == XP_BS_ONE
96 ! mch_memmove(pat + i, pat + i + 1, STRLEN(pat + i));
102 pat = vim_strsave(filepat);
103 for (i = 0; pat[i]; ++i)
104 if (pat[i] == '\\' && pat[i + 1] == ' ')
105 ! STRCPY(pat + i, pat + i + 1);
107 flags |= EW_FILE | EW_EXEC;
110 pat = vim_strsave(filepat);
111 for (i = 0; pat[i]; ++i)
112 if (pat[i] == '\\' && pat[i + 1] == ' ')
113 ! mch_memmove(pat + i, pat + i + 1, STRLEN(pat + i));
115 flags |= EW_FILE | EW_EXEC;
117 *** ../vim-7.1.054/src/misc1.c Sat Aug 4 12:14:04 2007
118 --- src/misc1.c Sun Aug 5 21:57:15 2007
121 for (p = buf + wildoff; p < s; ++p)
122 if (rem_backslash(p))
129 for (p = buf + wildoff; p < s; ++p)
130 if (rem_backslash(p))
132 ! mch_memmove(p, p + 1, STRLEN(p));
138 for (p = buf + wildoff; p < s; ++p)
139 if (rem_backslash(p))
146 for (p = buf + wildoff; p < s; ++p)
147 if (rem_backslash(p))
149 ! mch_memmove(p, p + 1, STRLEN(p));
153 *** ../vim-7.1.054/src/regexp.c Mon Jul 30 22:32:11 2007
154 --- src/regexp.c Sun Aug 5 15:43:27 2007
160 ! STRCPY(p, p + 1); /* remove '~' */
162 ! STRCPY(p, p + 2); /* remove '\~' */
170 ! mch_memmove(p, p + 1, STRLEN(p)); /* remove '~' */
172 ! mch_memmove(p, p + 2, STRLEN(p) - 1); /* remove '\~' */
176 *** ../vim-7.1.054/src/termlib.c Thu May 10 20:20:59 2007
177 --- src/termlib.c Sun Aug 5 21:52:41 2007
183 ! strcpy(lbuf, lbuf+2);
186 if (lbuf[llen-2] == '\\') /* and continuations */
191 ! mch_memmove(lbuf, lbuf + 2, strlen(lbuf + 2) + 1);
194 if (lbuf[llen-2] == '\\') /* and continuations */
195 *** ../vim-7.1.054/src/version.c Sun Aug 5 20:10:16 2007
196 --- src/version.c Mon Aug 6 21:34:54 2007
200 { /* Add new patch number below this line */
206 From "know your smileys":
207 % Bike accident. A bit far-fetched, I suppose; although...
209 _o /\_ _ \\o (_)\__/o (_)
210 _< \_ _>(_) (_)/<_ \_| \ _|/' \/
211 (_)>(_) (_) (_) (_) (_)' _\o_
213 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
214 /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
215 \\\ download, build and distribute -- http://www.A-A-P.org ///
216 \\\ help me help AIDS victims -- http://ICCF-Holland.org ///