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;
--
⑨