#include #include #include #include #include #include #include #define ROOTDIR "/data/cvsuproot" #define CWDDIR "/" int main() { const int uid=1005; const int gid=1005; if (chroot(ROOTDIR) != 0) { printf("Failed setting new root dir.\n"); exit(1); } if (chdir(CWDDIR) != 0) { printf("Failed changing dir.\n"); exit(1); } // open socket if (setgid(gid) != 0) { printf("Failed setting GID.\n"); exit(1); } if (setuid(uid) != 0) { printf("Failed setting UID.\n"); exit(1); } if (execle("/bin/cvsupd", "cvsupd", "-b", "/cvsupbase", "-C", "100", "-l", "/dev/stdout", NULL, NULL)) { printf("Failed executing program.\nError: %s\n", strerror(errno)); exit(1); } return(0); }