git: 9front

Download patch

ref: 1b438479be24def0ef900fc0a7f09e9fee1d8b56
parent: 1bf2461d21e8e8e4eb37a4af83b66f2dc5cf59c4
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Mon Jun 8 23:33:37 EDT 2015

devsegment: fix parsecmd() memory leak

--- a/sys/src/9/port/devsegment.c
+++ b/sys/src/9/port/devsegment.c
@@ -315,6 +315,10 @@
 	switch(TYPE(c)){
 	case Qctl:
 		cb = parsecmd(a, n);
+		if(waserror()){
+			free(cb);
+			nexterror();
+		}
 		if(strcmp(cb->f[0], "va") == 0){
 			if(g->s != nil)
 				error("already has a virtual address");
@@ -335,6 +339,8 @@
 				g->s = newseg(SG_SHARED, va, len);
 		} else
 			error(Ebadctl);
+		free(cb);
+		poperror();
 		break;
 	case Qdata:
 		return segio(g, g->s, a, n, voff, 0);
--