git: 9front

Download patch

ref: 68db08521b341556dde68ba2e4170912f376ba10
parent: 699dfd14b1b8cdbf395718a07aec23fd7529fc32
author: cinap_lenrek <cinap_lenrek@gmx.de>
date: Tue Jul 31 21:10:24 EDT 2012

cwfs: fix read offset integer overflow

--- a/sys/src/cmd/cwfs/9p1.c
+++ b/sys/src/cmd/cwfs/9p1.c
@@ -911,8 +911,9 @@
 		}
 		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) {
--- a/sys/src/cmd/cwfs/9p2.c
+++ b/sys/src/cmd/cwfs/9p2.c
@@ -1017,7 +1017,9 @@
 	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){
--