X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=client.c;h=d201bef428672b9b84683082b990b886f514700e;hb=a36c2e0235323aacb9c4ea55ae0201e656362059;hp=4fbb710856cfeec82aff689388a35cb2ff493e1c;hpb=1982e587ecd564773110ad1099eabf5b12cb2a57;p=userv.git diff --git a/client.c b/client.c index 4fbb710..d201bef 100644 --- a/client.c +++ b/client.c @@ -378,6 +378,7 @@ static void sighandler_chld(int ignored) /* DOES return, unlike in daemon */ { memset(&event_mbuf,0,sizeof(event_mbuf)); event_mbuf.magic= EVENT_MAGIC; event_mbuf.type= et_closereadfd; + event_mbuf.data.closereadfd.fd= fd; r= fwrite(&event_mbuf,1,sizeof(event_mbuf),swfile); if (r != sizeof(event_mbuf) || fflush(swfile)) if (errno != EPIPE) syscallerror("inform service of closed read fd"); @@ -434,7 +435,7 @@ static void usage(void) { " --spoof-user } or same user\n" "fdmodifiers: read write overwrite trunc[ate]\n" "(separate with commas) append sync excl[usive] creat[e] fd\n\n" - "userv and uservd version " VERSION "; copyright (C)1996-1997 Ian Jackson.\n" + "userv and uservd version " VERSION VEREXT "; copyright (C)1996-1997 Ian Jackson.\n" "there is NO WARRANTY; type `userv --copyright' for details.\n", stderr) < 0) syscallerror("write usage to stderr"); @@ -737,13 +738,14 @@ static void callvalueoption(const struct optioninfo *oip, char *arg) { char *equals; if (oip->values == 2) { equals= strchr(arg,'='); - if (!equals) + if (!equals) { if (oip->abbrev) usageerror("option --%s (-%c) passed argument `%s' with no `='", oip->full,oip->abbrev,arg); else usageerror("option --%s passed argument `%s' with no `='", oip->full,arg); + } *equals++= 0; (oip->fn)(oip,equals,arg); } else { @@ -1047,6 +1049,7 @@ static void server_sendrequest(int argc, char *const *argv) { request_mbuf.serviceuserlen= strlen(serviceuser); request_mbuf.servicelen= strlen(argv[0]); request_mbuf.lognamelen= strlen(logname); + request_mbuf.spoofed= spoofuser ? 1 : 0; request_mbuf.cwdlen= cwdbufsize; request_mbuf.callinguid= spoofuid; request_mbuf.ngids= ngids+1;