Skip to content

Commit 35a70f5

Browse files
committed
updated for version 7.4.010
Problem: Crash with invalid argument to mkdir(). Solution: Check for empty string. (lcd47)
1 parent 3283d2b commit 35a70f5

File tree

2 files changed

+17
-10
lines changed

2 files changed

+17
-10
lines changed

src/eval.c

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14292,18 +14292,23 @@ f_mkdir(argvars, rettv)
1429214292
return;
1429314293

1429414294
dir = get_tv_string_buf(&argvars[0], buf);
14295-
if (*gettail(dir) == NUL)
14296-
/* remove trailing slashes */
14297-
*gettail_sep(dir) = NUL;
14298-
14299-
if (argvars[1].v_type != VAR_UNKNOWN)
14295+
if (*dir == NUL)
14296+
rettv->vval.v_number = FAIL;
14297+
else
1430014298
{
14301-
if (argvars[2].v_type != VAR_UNKNOWN)
14302-
prot = get_tv_number_chk(&argvars[2], NULL);
14303-
if (prot != -1 && STRCMP(get_tv_string(&argvars[1]), "p") == 0)
14304-
mkdir_recurse(dir, prot);
14299+
if (*gettail(dir) == NUL)
14300+
/* remove trailing slashes */
14301+
*gettail_sep(dir) = NUL;
14302+
14303+
if (argvars[1].v_type != VAR_UNKNOWN)
14304+
{
14305+
if (argvars[2].v_type != VAR_UNKNOWN)
14306+
prot = get_tv_number_chk(&argvars[2], NULL);
14307+
if (prot != -1 && STRCMP(get_tv_string(&argvars[1]), "p") == 0)
14308+
mkdir_recurse(dir, prot);
14309+
}
14310+
rettv->vval.v_number = prot == -1 ? FAIL : vim_mkdir_emsg(dir, prot);
1430514311
}
14306-
rettv->vval.v_number = prot == -1 ? FAIL : vim_mkdir_emsg(dir, prot);
1430714312
}
1430814313
#endif
1430914314

src/version.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -727,6 +727,8 @@ static char *(features[]) =
727727

728728
static int included_patches[] =
729729
{ /* Add new patch number below this line */
730+
/**/
731+
10,
730732
/**/
731733
9,
732734
/**/

0 commit comments

Comments
 (0)