X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=client.c;h=c5fbcd5a356dffaa61d3178932035dad1070a1a4;hb=150ac98f750353e2631d48eba47476b81ba1a3fa;hp=5f60d0e5cb0d2458b43c80871540812fe5f9dad5;hpb=36df57f725905f613109b8b610efd60ec0952c77;p=userv.git diff --git a/client.c b/client.c index 5f60d0e..c5fbcd5 100644 --- a/client.c +++ b/client.c @@ -132,7 +132,7 @@ static const char *loginname; static char *cwdbuf; static size_t cwdbufsize; static char *ovbuf; -static int ovused, systemerror; +static int ovused, systemerror, socketfd; static void blocksignals(int how) { sigset_t set; @@ -809,7 +809,7 @@ static void security_init(void) { mypid= getpid(); if (mypid == (pid_t)-1) syscallerror("getpid"); myuid= getuid(); if (myuid == (uid_t)-1) syscallerror("getuid"); mygid= getgid(); if (mygid == (gid_t)-1) syscallerror("getgid"); - ngids= getgroups(0,0); if (ngids == (gid_t)-1) syscallerror("getgroups(0,0)"); + ngids= getgroups(0,0); if (ngids == -1) syscallerror("getgroups(0,0)"); gidarray= xmalloc(sizeof(gid_t)*ngids); if (getgroups(ngids,gidarray) != ngids) syscallerror("getgroups(ngids,)"); @@ -1220,6 +1220,8 @@ static void connect_pipes(void) { reading= fdsetup[fd].mods & fdm_read; catdup(catnamebuf, fdsetup[fd].copyfd, reading ? 0 : 1); catdup(catnamebuf, fdsetup[fd].pipefd, reading ? 1 : 0); + if (close(socketfd)) + fsyscallerror("%s: close client socket for for cat",catnamebuf); close_unwanted_pipes(); execl("/bin/cat",catnamebuf,(char*)0); fprintf(stderr,"userv: %s: cannot exec `cat': %s\n",catnamebuf,strerror(errno)); @@ -1326,7 +1328,7 @@ static void NONRETURNING process_exitstatus(int status) { } int main(int argc, char *const *argv) { - int status, socketfd; + int status; #ifdef NDEBUG # error Do not disable assertions in this security-critical code !