git: 9front

Download patch

ref: 1ad3ea28296502dc7cd1dac8752edadd3e555985
parent: 160ca7173776d851d56beda27420f75120a68e03
author: cinap_lenrek <cinap_lenrek@gmx.de>
date: Wed May 1 14:31:13 EDT 2013

devloopback: fix potential channel leak on allocation error (from eriks 9atom)

--- a/sys/src/9/port/devloopback.c
+++ b/sys/src/9/port/devloopback.c
@@ -131,8 +131,12 @@
 	}
 
 	c = devattach('X', spec);
-	lb = &loopbacks[dev];
+	if(waserror()){
+		chanfree(c);
+		nexterror();
+	}
 
+	lb = &loopbacks[dev];
 	qlock(lb);
 	if(waserror()){
 		lb->ref--;
@@ -167,6 +171,8 @@
 	}
 	poperror();
 	qunlock(lb);
+
+	poperror();
 
 	mkqid(&c->qid, QID(0, Qtopdir), 0, QTDIR);
 	c->aux = lb;
--