diff --git a/fs/vfs/fs_rmdir.c b/fs/vfs/fs_rmdir.c index c0d1f67adb3ea27ec1eaf54c9893c64d54728609..7d5f31b1ef2f32cbeaf936b300c0b67b9ad05b1a 100644 --- a/fs/vfs/fs_rmdir.c +++ b/fs/vfs/fs_rmdir.c @@ -111,6 +111,11 @@ int do_rmdir(int dirfd, const char *pathname) char *name = NULL; int ret; + if (pathname == NULL) + { + return -EINVAL; + } + /* Get relative path by dirfd*/ ret = get_path_from_fd(dirfd, &relativepath); if (ret < 0) diff --git a/fs/vfs/fs_unlink.c b/fs/vfs/fs_unlink.c index d1947a7b8ad4d7e86989c5b8a725caf37fee862e..d95f0b19aa31b1af0d1ea644fdef123d1f707a19 100644 --- a/fs/vfs/fs_unlink.c +++ b/fs/vfs/fs_unlink.c @@ -192,9 +192,13 @@ extern int do_rmdir(int dirfd, const char *pathname); int unlinkat(int dirfd, const char *pathname, int flag) { + if (pathname == NULL) + { + return -EINVAL; + } /* Now flag only support 0 && AT_REMOVEDIR */ if ((flag & ~AT_REMOVEDIR) != 0) - return VFS_ERROR; + return -EINVAL; if (flag & AT_REMOVEDIR) return do_rmdir(dirfd, pathname);