diff options
-rw-r--r-- | sys/fs/msdosfs/msdosfs_vnops.c | 6 | ||||
-rw-r--r-- | sys/msdosfs/msdosfs_vnops.c | 6 |
2 files changed, 6 insertions, 6 deletions
diff --git a/sys/fs/msdosfs/msdosfs_vnops.c b/sys/fs/msdosfs/msdosfs_vnops.c index 3ef8e74..3ad5135 100644 --- a/sys/fs/msdosfs/msdosfs_vnops.c +++ b/sys/fs/msdosfs/msdosfs_vnops.c @@ -545,7 +545,7 @@ msdosfs_read(ap) } */ *ap; { int error = 0; - int diff; + off_t diff; int blsize; int isadir; int orig_resid; @@ -575,12 +575,12 @@ msdosfs_read(ap) isadir = dep->de_Attributes & ATTR_DIRECTORY; do { + if (uio->uio_offset >= dep->de_FileSize) + break; lbn = de_cluster(pmp, uio->uio_offset); on = uio->uio_offset & pmp->pm_crbomask; n = min((u_long) (pmp->pm_bpcluster - on), uio->uio_resid); diff = dep->de_FileSize - uio->uio_offset; - if (diff <= 0) - break; if (diff < n) n = diff; /* convert cluster # to block # if a directory */ diff --git a/sys/msdosfs/msdosfs_vnops.c b/sys/msdosfs/msdosfs_vnops.c index 3ef8e74..3ad5135 100644 --- a/sys/msdosfs/msdosfs_vnops.c +++ b/sys/msdosfs/msdosfs_vnops.c @@ -545,7 +545,7 @@ msdosfs_read(ap) } */ *ap; { int error = 0; - int diff; + off_t diff; int blsize; int isadir; int orig_resid; @@ -575,12 +575,12 @@ msdosfs_read(ap) isadir = dep->de_Attributes & ATTR_DIRECTORY; do { + if (uio->uio_offset >= dep->de_FileSize) + break; lbn = de_cluster(pmp, uio->uio_offset); on = uio->uio_offset & pmp->pm_crbomask; n = min((u_long) (pmp->pm_bpcluster - on), uio->uio_resid); diff = dep->de_FileSize - uio->uio_offset; - if (diff <= 0) - break; if (diff < n) n = diff; /* convert cluster # to block # if a directory */ |