shithub: riscv

Download patch

ref: a1015612231e511ef11ecda9c48179a47a1ba980
parent: e981a260006105385c4870ccb739db2bef33affd
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Thu Jan 2 15:11:22 EST 2025

auth/factotum: avoid static buffer from netmkaddr()

factotum calls authdial() in parallel, so use
the reentrant version netmkaddrbuf() instead.

--- a/sys/src/cmd/auth/factotum/util.c
+++ b/sys/src/cmd/auth/factotum/util.c
@@ -75,6 +75,7 @@
 int
 _authdial(char *authdom)
 {
+	char addr[256];
 	int i, fd;
 
 	alarm(30*1000);
@@ -97,9 +98,11 @@
 		if(authaddr[0] == nil)
 			netndbauthaddr();
 		for(i = 0; fd < 0 && authaddr[i] != nil; i++){
-			fd = dial(netmkaddr(authaddr[i], "tcp", "567"), 0, 0, 0);
+			fd = dial(netmkaddrbuf(authaddr[i], "tcp", "567", addr, sizeof(addr)),
+				nil, nil, nil);
 			if(fd < 0)
-				fd = dial(netmkaddr(authaddr[i], "il", "566"), 0, 0, 0);
+				fd = dial(netmkaddrbuf(authaddr[i], "il", "566", addr, sizeof(addr)),
+					nil, nil, nil);
 		}
 	}
 	alarm(0);
--- a/sys/src/libauthsrv/authdial.c
+++ b/sys/src/libauthsrv/authdial.c
@@ -7,6 +7,7 @@
 int
 authdial(char *netroot, char *dom)
 {
+	char addr[256];
 	Ndbtuple *t, *nt;
 	char *p;
 	int rv;
@@ -13,7 +14,8 @@
 
 	if(dom == nil)
 		/* look for one relative to my machine */
-		return dial(netmkaddr("$auth", nil, "ticket"), nil, nil, nil);
+		return dial(netmkaddrbuf("$auth", nil, "ticket", addr, sizeof(addr)),
+			nil, nil, nil);
 
 	/* look up an auth server in an authentication domain */
 	p = csgetvalue(netroot, "authdom", dom, "auth", &t);
@@ -41,7 +43,8 @@
 	rv = -1;
 	for(nt = t; nt != nil; nt = nt->entry) {
 		if(strcmp(nt->attr, "auth") == 0) {
-			rv = dial(netmkaddr(nt->val, nil, "ticket"), nil, nil, nil);
+			rv = dial(netmkaddrbuf(nt->val, nil, "ticket", addr, sizeof(addr)),
+				nil, nil, nil);
 			if(rv >= 0)
 				break;
 		}
--