git: 9front

Download patch

ref: 2084ada4fb4cc5b1143e695a27f2a0a570a23c6b
parent: ece5096297511afe2929813bdc9c780f28db7180
author: cinap_lenrek <cinap_lenrek@centraldogma>
date: Sun Jan 1 16:00:01 EST 2012

mothra: fix libpanel entry buffer overflow when pasting text

--- a/sys/src/cmd/mothra/libpanel/entry.c
+++ b/sys/src/cmd/mothra/libpanel/entry.c
@@ -28,16 +28,17 @@
 			write(fd, ep->entry, n);
 		ep->entp=ep->entry;
 	}else{
-		if((s=malloc(1024+SLACK))==0){
+		n = 1024;
+		if((s=malloc(n+SLACK))==0){
 			close(fd);
 			return;
 		}
-		if((n=readn(fd, s, 1024))<0)
+		if((n=readn(fd, s, n))<0)
 			n=0;
 		free(ep->entry);
 		s=realloc(s, n+SLACK);
 		ep->entry=s;
-		ep->eent=s+n+SLACK;
+		ep->eent=s+n;
 		ep->entp=s+n;
 	}
 	close(fd);
@@ -129,9 +130,9 @@
 			ep->entp=ep->entry+n;
 			ep->eent=ep->entp+100;
 		}
+		*ep->entp='\0';
 		break;
 	}
-	memset(ep->entp, 0, SLACK);
 	pldraw(p, p->b);
 }
 Point pl_getsizeentry(Panel *p, Point children){
--