ref: db0942addb31ca19dea12085c9c7c04603d1a4d9
parent: 68db08521b341556dde68ba2e4170912f376ba10
author: cinap_lenrek <cinap_lenrek@gmx.de>
date: Tue Jul 31 21:22:01 EDT 2012
kfs: fix read offset integer overflow
--- a/sys/src/cmd/disk/kfs/9p1.c
+++ b/sys/src/cmd/disk/kfs/9p1.c
@@ -807,7 +807,9 @@
addr = 0;
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) {addr = offset / BUFSIZE;
--- a/sys/src/cmd/disk/kfs/9p2.c
+++ b/sys/src/cmd/disk/kfs/9p2.c
@@ -1071,7 +1071,9 @@
accessdir(p, d, FREAD);
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){--
⑨