From 07b5e30bb4167a593b9245a689568a027aff25a1 Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Thu, 27 Oct 1994 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 1994-10-27 --- port/auth.c | 3 ++- port/portfns.h | 1 + port/proc.c | 15 +++++++++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/port/auth.c b/port/auth.c index 87db458b78beb614af4bd17fd64f022beb9d77f3..93896256cb3379907e7c57e70a980f446001d42d 100644 --- a/port/auth.c +++ b/port/auth.c @@ -34,7 +34,7 @@ struct Crypt *free; } cryptalloc; -char eve[NAMELEN] = "bootes"; +char eve[NAMELEN]; char evekey[DESKEYLEN]; char hostdomain[DOMLEN]; @@ -595,6 +595,7 @@ hostownerwrite(char *a, int n) strncpy(buf, a, n); if(buf[0] == 0) error(Ebadarg); + renameuser(eve, buf); memmove(eve, buf, NAMELEN); memmove(up->user, buf, NAMELEN); up->basepri = PriNormal; diff --git a/port/portfns.h b/port/portfns.h index dfbea994803a6226878501caa2d958a262437b9c..1d34a73a5f0dfd2dd8f190620be91d8eb5f97192 100644 --- a/port/portfns.h +++ b/port/portfns.h @@ -211,6 +211,7 @@ int readnum(ulong, char*, ulong, ulong, int); int readstr(ulong, char*, ulong, char*); void ready(Proc*); void relocateseg(Segment*, ulong); +void renameuser(char*, char*); void resched(char*); void resetscsi(void); void resrcwait(char*); diff --git a/port/proc.c b/port/proc.c index 5b528c4b483faa87d75882dca22626a1c9d5b0cb..f5967e0ab8275073df1a4bd49b7bb15e25f7d75c 100644 --- a/port/proc.c +++ b/port/proc.c @@ -938,3 +938,18 @@ killbig(void) kp->procctl = Proc_exitme; postnote(kp, 1, "killed: proc too big", NExit); } + +/* + * change ownership to 'new' of all processes owned by 'old'. Used when + * eve changes. + */ +void +renameuser(char *old, char *new) +{ + Proc *p, *ep; + + ep = procalloc.arena+conf.nproc; + for(p = procalloc.arena; p < ep; p++) + if(strcmp(old, p->user) == 0) + memmove(p->user, new, NAMELEN); +}