mirror of
https://github.com/openharmony/third_party_NuttX.git
synced 2026-07-21 08:05:20 -04:00
fix: add null check in rmdir/unlinkat
close: #I4ATUC Signed-off-by: Leon Chan <chenwei26@huawei.com>
This commit is contained in:
@@ -111,6 +111,12 @@ int do_rmdir(int dirfd, const char *pathname)
|
||||
char *name = NULL;
|
||||
int ret;
|
||||
|
||||
if (pathname == NULL)
|
||||
{
|
||||
ret = -EINVAL;
|
||||
goto errout;
|
||||
}
|
||||
|
||||
/* Get relative path by dirfd*/
|
||||
ret = get_path_from_fd(dirfd, &relativepath);
|
||||
if (ret < 0)
|
||||
|
||||
+16
-1
@@ -190,12 +190,27 @@ extern int do_rmdir(int dirfd, const char *pathname);
|
||||
|
||||
int unlinkat(int dirfd, const char *pathname, int flag)
|
||||
{
|
||||
int ret;
|
||||
|
||||
if (pathname == NULL)
|
||||
{
|
||||
ret = -EINVAL;
|
||||
goto errout;
|
||||
}
|
||||
|
||||
/* Now flag only support 0 && AT_REMOVEDIR */
|
||||
if ((flag & ~AT_REMOVEDIR) != 0)
|
||||
return VFS_ERROR;
|
||||
{
|
||||
ret = -EINVAL;
|
||||
goto errout;
|
||||
}
|
||||
|
||||
if (flag & AT_REMOVEDIR)
|
||||
return do_rmdir(dirfd, pathname);
|
||||
|
||||
return do_unlink(dirfd, pathname);
|
||||
|
||||
errout:
|
||||
set_errno(-ret);
|
||||
return VFS_ERROR;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user