patch 9.1.1690: Missing recursion guard in dos/unix_expandpath()
Commit:
https://github.com/vim/vim/commit/e8948a1f807cb595446e896e00bdf0e5339f0dd2
Author: ashamedbit <
muralian...@gmail.com>
Date: Tue Aug 26 17:43:18 2025 +0200
patch 9.1.1690: Missing recursion guard in dos/unix_expandpath()
Problem: Missing recursion guard in dos/unix_expandpath()
Solution: Add guard variables (ashamedbit)
fixes: #18099
closes: #18106
Co-authored-by: Hirohito Higashi <
h.eas...@gmail.com>
Signed-off-by: ashamedbit <
muralian...@gmail.com>
Signed-off-by: Christian Brabandt <
c...@256bit.org>
diff --git a/src/filepath.c b/src/filepath.c
index 7d115eeda..d8a1dce74 100644
--- a/src/filepath.c
+++ b/src/filepath.c
@@ -3709,9 +3709,14 @@ dos_expandpath(
vim_snprintf((char *)buf + len, buflen - len, "%s", path_end);
if (mch_has_exp_wildcard(path_end))
{
- // need to expand another component of the path
- // remove backslashes for the remaining components only
- (void)dos_expandpath(gap, buf, len + 1, flags, FALSE);
+ if (stardepth < 100)
+ {
+ // need to expand another component of the path
+ // remove backslashes for the remaining components only
+ ++stardepth;
+ (void)dos_expandpath(gap, buf, len + 1, flags, FALSE);
+ --stardepth;
+ }
}
else
{
@@ -3950,9 +3955,14 @@ unix_expandpath(
vim_snprintf((char *)buf + len, buflen - len, "%s", path_end);
if (mch_has_exp_wildcard(path_end)) // handle more wildcards
{
- // need to expand another component of the path
- // remove backslashes for the remaining components only
- (void)unix_expandpath(gap, buf, len + 1, flags, FALSE);
+ if (stardepth < 100)
+ {
+ // need to expand another component of the path
+ // remove backslashes for the remaining components only
+ ++stardepth;
+ (void)unix_expandpath(gap, buf, len + 1, flags, FALSE);
+ --stardepth;
+ }
}
else
{
diff --git a/src/version.c b/src/version.c
index bedb8ec0b..b0ce4f311 100644
--- a/src/version.c
+++ b/src/version.c
@@ -724,6 +724,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 1690,
/**/
1689,
/**/