shithub: front

Download patch

ref: 0ab0a036edd97a461b1b0b1ff5c5c8274f2a6f7b
parent: 15341e1116cd0fe31dcf3fb989d2004a8d3a3e8f
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Fri Aug 30 14:54:43 EDT 2024

gefs: fix use after free in putconn()

--- a/sys/src/cmd/gefs/fs.c
+++ b/sys/src/cmd/gefs/fs.c
@@ -2291,7 +2291,7 @@
 {
 	Conn **pp;
 	Amsg *a;
-	Fid *f;
+	Fid *f, *nf;
 	int i;
 
 	if(adec(&c->ref) != 0)
@@ -2314,7 +2314,9 @@
 
 	for(i = 0; i < Nfidtab; i++){
 		lock(&c->fidtablk[i]);
-		for(f = c->fidtab[i]; f != nil; f = f->next){
+		for(f = c->fidtab[i]; f != nil; f = nf){
+			nf = f->next;
+			ainc(&f->ref);
 			lock(f);
 			a = nil;
 			clunkfid(c, f, &a);
--