X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=client.c;h=c5fbcd5a356dffaa61d3178932035dad1070a1a4;hb=150ac98f750353e2631d48eba47476b81ba1a3fa;hp=ab3ae6f0fb1e33fd16c8b6bba4ae1285f257229e;hpb=f12fa48baec9359b5dfd302899a28bb4c4f1e2d6;p=userv.git diff --git a/client.c b/client.c index ab3ae6f..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; @@ -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 !