patch 8.1.2105: MS-Windows: system() may crash
Problem: MS-Windows: system() may crash.
Solution: Do not use "itmp" when it is NULL. (Yasuhiro Matsumoto,
closes #5005)
diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index 9d58ab4..85e5be0 100644
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -1778,28 +1778,30 @@
}
else
{
- char_u *p;
+ STRCPY(buf, cmd);
+ if (itmp != NULL)
+ {
+ char_u *p;
- /*
- * If there is a pipe, we have to put the '<' in front of it.
- * Don't do this when 'shellquote' is not empty, otherwise the
- * redirection would be inside the quotes.
- */
- if (*p_shq == NUL)
- {
- p = find_pipe(buf);
- if (p != NULL)
- *p = NUL;
- }
- STRCAT(buf, " <"); /* " < " causes problems on Amiga */
- STRCAT(buf, itmp);
- if (*p_shq == NUL)
- {
- p = find_pipe(cmd);
- if (p != NULL)
+ // If there is a pipe, we have to put the '<' in front of it.
+ // Don't do this when 'shellquote' is not empty, otherwise the
+ // redirection would be inside the quotes.
+ if (*p_shq == NUL)
{
- STRCAT(buf, " "); /* insert a space before the '|' for DOS */
- STRCAT(buf, p);
+ p = find_pipe(buf);
+ if (p != NULL)
+ *p = NUL;
+ }
+ STRCAT(buf, " <"); // " < " causes problems on Amiga
+ STRCAT(buf, itmp);
+ if (*p_shq == NUL)
+ {
+ p = find_pipe(cmd);
+ if (p != NULL)
+ {
+ STRCAT(buf, " "); // insert a space before the '|' for DOS
+ STRCAT(buf, p);
+ }
}
}
}