ref: aff2fa032ba3feb3f2dd3725a0cf71a6da533846
parent: 73ecfeda6df68dc89a93e17799cad0de3d786497
author: Ori Bernstein <[email protected]>
date: Thu Nov 30 19:48:50 EST 2023
users: make reloading the user file safer we shouldn't clobber the ids until after we fully load the user file successfully.
--- a/user.c
+++ b/user.c
@@ -135,10 +135,6 @@
snprint(u->name, sizeof(u->name), "%s", f);
u->memb = nil;
u->nmemb = 0;
- if(strcmp(u->name, "none") == 0)
- noneid = u->id;
- if(strcmp(u->name, "adm") == 0)
- admid = u->id;
i++;
}
nusers = i;
@@ -195,8 +191,6 @@
}
grp = g;
grp[ngrp++] = u->id;
- if(strcmp(u->name, "nogroup") == 0)
- nogroupid = u->id;
}
users[i].memb = grp;
users[i].nmemb = ngrp;
@@ -228,6 +222,7 @@
char *s, *e;
vlong len;
Qid q;
+ User *u;
if(walk1(t, -1, "", &q, &len) == -1)
error(Efs);
@@ -240,11 +235,20 @@
s = slurp(t, q.path, len);
e = parseusers(fd, s);
if(e != nil){
- if(fs->users != nil)
+ if(fs->users != nil){
+ fprint(2, "load users: %s\n", e);
+ fprint(2, "keeping old table\n");
error(e);
+ }
fprint(2, "user table broken: %s\n", e);
fprint(2, "\tfalling back to default\n");
parseusers(fd, "-1:adm::\n0:none::\n");
}
+ if((u = name2user("none")) != nil)
+ noneid = u->id;
+ if((u = name2user("adm")) != nil)
+ admid = u->id;
+ if((u = name2user("nogroup")) != nil)
+ nogroupid = u->id;
free(s);
}