summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/src/cmd/cwfs/9p1.c5
-rw-r--r--sys/src/cmd/cwfs/9p2.c4
2 files changed, 6 insertions, 3 deletions
diff --git a/sys/src/cmd/cwfs/9p1.c b/sys/src/cmd/cwfs/9p1.c
index a040009cc..3c8b3af0c 100644
--- a/sys/src/cmd/cwfs/9p1.c
+++ b/sys/src/cmd/cwfs/9p1.c
@@ -911,8 +911,9 @@ f_read(Chan *cp, Fcall *in, Fcall *ou)
}
goto out;
}
-
- if(offset+count > d->size)
+ if(offset >= d->size)
+ count = 0;
+ else if(offset+count > d->size)
count = d->size - offset;
while(count > 0) {
if(p == 0) {
diff --git a/sys/src/cmd/cwfs/9p2.c b/sys/src/cmd/cwfs/9p2.c
index aeb7d6190..87736ab6e 100644
--- a/sys/src/cmd/cwfs/9p2.c
+++ b/sys/src/cmd/cwfs/9p2.c
@@ -1017,7 +1017,9 @@ fs_read(Chan* chan, Fcall* f, Fcall* r, uchar* data)
accessdir(p, d, FREAD, file->uid);
if(d->mode & DDIR)
goto dread;
- if(offset+count > d->size)
+ if(offset >= d->size)
+ count = 0;
+ else if(offset+count > d->size)
count = d->size - offset;
while(count > 0){
if(p == nil){