Fix bug in ntfs_attr_pwrite() when we sometimes lose current run in the runlist.

edge.strict_endians
cha0smaster 2006-03-04 13:56:34 +00:00
parent 01309e4ec9
commit f424e61b96
2 changed files with 17 additions and 12 deletions

View File

@ -1,3 +1,8 @@
xx/xx/2006 - 1.13.1-WIP
- Fix bug in ntfs_attr_pwrite() when we sometimes lose current run in
the runlist. (Yura)
27/02/2006 - 1.13.0 - Lots and lots and lots of fixes and enhancements.
- Temporarily disable use of the legal ansi character checking in

View File

@ -1025,18 +1025,6 @@ s64 ntfs_attr_pwrite(ntfs_attr *na, const s64 pos, s64 count, const void *b)
return count;
}
total = 0;
/* Find the runlist element containing the vcn. */
rl = ntfs_attr_find_vcn(na, pos >> vol->cluster_size_bits);
if (!rl) {
/*
* If the vcn is not present it is an out of bounds write.
* However, we already extended the size of the attribute,
* so getting this here must be an error of some kind.
*/
if (errno == ENOENT)
errno = EIO;
goto err_out;
}
/* Handle writes beyond initialized_size. */
if (pos + count > na->initialized_size) {
if (ntfs_attr_map_whole_runlist(na))
@ -1102,6 +1090,18 @@ s64 ntfs_attr_pwrite(ntfs_attr *na, const s64 pos, s64 count, const void *b)
*/
need_to.undo_initialized_size = 1;
}
/* Find the runlist element containing the vcn. */
rl = ntfs_attr_find_vcn(na, pos >> vol->cluster_size_bits);
if (!rl) {
/*
* If the vcn is not present it is an out of bounds write.
* However, we already extended the size of the attribute,
* so getting this here must be an error of some kind.
*/
if (errno == ENOENT)
errno = EIO;
goto err_out;
}
/*
* Scatter the data from the linear data buffer to the volume. Note, a
* partial final vcn is taken care of by the @count capping of write