Catch and deny all junction/reparse point write operations. (Szaka)

edge.strict_endians
Yura Pakhuchiy 2007-09-05 21:19:53 +03:00
parent 7d6a8f2767
commit 9f51bdfd05
1 changed files with 11 additions and 1 deletions

View File

@ -1112,6 +1112,11 @@ static ntfs_inode *__ntfs_create(ntfs_inode *dir_ni,
errno = EINVAL;
return NULL;
}
/* FIXME: Reparse points requires special handling. */
if (dir_ni->flags & FILE_ATTR_REPARSE_POINT) {
err = EOPNOTSUPP;
goto err_out;
}
/* Allocate MFT record for new file. */
ni = ntfs_mft_record_alloc(dir_ni->vol, NULL);
if (!ni) {
@ -1222,7 +1227,7 @@ static ntfs_inode *__ntfs_create(ntfs_inode *dir_ni,
ni->vol->indx_record_size >>
ni->vol->cluster_size_bits;
else
ir->clusters_per_index_block =
ir->clusters_per_index_block =
ni->vol->indx_record_size >>
ni->vol->sector_size_bits;
ir->index.entries_offset = cpu_to_le32(sizeof(INDEX_HEADER));
@ -1685,6 +1690,11 @@ int ntfs_link(ntfs_inode *ni, ntfs_inode *dir_ni, ntfschar *name, u8 name_len)
ntfs_log_error("Invalid arguments.");
goto err_out;
}
/* FIXME: Reparse points requires special handling. */
if (ni->flags & FILE_ATTR_REPARSE_POINT) {
err = EOPNOTSUPP;
goto err_out;
}
/* Create FILE_NAME attribute. */
fn_len = sizeof(FILE_NAME_ATTR) + name_len * sizeof(ntfschar);
fn = ntfs_calloc(fn_len);