X-Git-Url: https://git.jankratochvil.net/?p=nethome.git;a=blobdiff_plain;f=src%2Fpserverchroot.c;h=c60f3a897bd9e36ae0498120c897c0a9eeea6943;hp=325814721e4b6cc29a2bae834cc37f856d39ab77;hb=dc3afbf1633090347f5f807332407aa0ac3245a5;hpb=f6dfebbbc2a771c22112890ef96c1d07099e2cc1 diff --git a/src/pserverchroot.c b/src/pserverchroot.c index 3258147..c60f3a8 100644 --- a/src/pserverchroot.c +++ b/src/pserverchroot.c @@ -4,12 +4,10 @@ #include #include -extern const char **environ; - -#define SETUID 554 /* "pserver" user UID */ -#define SETGID 554 /* "pserver" group GID */ -#define PERMITTED_ENV_LIST "PWD" +#define SETUID 515 /* "pserver" user UID */ +#define SETGID 515 /* "pserver" group GID */ +#define CHROOT_DIR "/home/pserver" #define EXEC_PATHNAME "/usr/bin/cvs" @@ -43,26 +41,9 @@ static void funcfail(const char *funcname) int main(int argc,char **argv) { -int total=0; -const char *allowed[]={ PERMITTED_ENV_LIST }; -const char **allp,**envp; -char *dup=NULL,*s; - -retry: - for (envp=environ;*envp;envp++) { - if (dup) free(dup); - dup=strdup(*envp); - if ((s=strchr(dup,'='))) *s='\0'; - for (allp=allowed;allp1000) - EXITLOG("Unable to clean environment for CVS pserver: %s",*envp); - unsetenv(dup); - goto retry; -ok:; - } + FUNCCHK(clearenv); FUNCCHK(setenv,"PATH","/usr/bin",1); - FUNCCHK(chroot,"/home/short/pserver"); + FUNCCHK(chroot,CHROOT_DIR); FUNCCHK(chdir,"/"); FUNCCHK(setgid,SETGID); FUNCCHK(setuid,SETUID);