git: 9front

Download patch

ref: f75f083cc73a794fece87f75ffdceac6c16341be
parent: b36c27363ad7f0116d85363d95af52e8e228e4b9
author: ppatience0 <ppatience0@gmail.com>
date: Sun Feb 17 04:55:03 EST 2013

rdbio: fix bug where a->user never gets set if Bopen fails.

--- a/sys/src/cmd/auth/lib/rdbio.c
+++ b/sys/src/cmd/auth/lib/rdbio.c
@@ -33,26 +33,26 @@
 
 	memset(a, 0, sizeof(Acctbio));
 	b = Bopen(file, OREAD);
-	if(b == 0)
-		return;
-	while(p = Brdline(b, '\n')){
-		p[Blinelen(b)-1] = 0;
-		n = getfields(p, field, nelem(field), 0, "|");
-		if(n < 4)
-			continue;
-		if(strcmp(field[0], user) != 0)
-			continue;
+	if(b != 0){
+		while(p = Brdline(b, '\n')){
+			p[Blinelen(b)-1] = 0;
+			n = getfields(p, field, nelem(field), 0, "|");
+			if(n < 4)
+				continue;
+			if(strcmp(field[0], user) != 0)
+				continue;
 
-		clrbio(a);
+			clrbio(a);
 
-		a->postid = strdup(field[1]);
-		a->name = strdup(field[2]);
-		a->dept = strdup(field[3]);
-		if(n-4 >= Nemail)
-			n = Nemail-4;
-		for(i = 4; i < n; i++)
-			a->email[i-4] = strdup(field[i]);
+			a->postid = strdup(field[1]);
+			a->name = strdup(field[2]);
+			a->dept = strdup(field[3]);
+			if(n-4 >= Nemail)
+				n = Nemail-4;
+			for(i = 4; i < n; i++)
+				a->email[i-4] = strdup(field[i]);
+		}
+		Bterm(b);
 	}
 	a->user = strdup(user);
-	Bterm(b);
 }
--