From 6e5a97f2a1fd2c40a89c0846cb1e8f1b3bfd3a97 Mon Sep 17 00:00:00 2001 From: Timo Teräs Date: Sat, 6 Dec 2014 12:21:27 -0500 Subject: gssd: talk to kernel using file descriptors instead of FILE Signed-off-by: Steve Dickson --- utils/gssd/gssd_proc.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'utils/gssd/gssd_proc.c') diff --git a/utils/gssd/gssd_proc.c b/utils/gssd/gssd_proc.c index 121feb1..1d8e6a7 100644 --- a/utils/gssd/gssd_proc.c +++ b/utils/gssd/gssd_proc.c @@ -78,6 +78,7 @@ #include "nfsrpc.h" #include "nfslib.h" #include "gss_names.h" +#include "misc.h" /* * pollarray: @@ -1250,7 +1251,7 @@ void handle_gssd_upcall(struct clnt_info *clp) { uid_t uid; - char *lbuf = NULL; + char lbuf[RPC_CHAN_BUF_SIZE]; int lbuflen = 0; char *p; char *mech = NULL; @@ -1260,11 +1261,14 @@ handle_gssd_upcall(struct clnt_info *clp) printerr(1, "handling gssd upcall (%s)\n", clp->dirname); - if (readline(clp->gssd_fd, &lbuf, &lbuflen) != 1) { + lbuflen = read(clp->gssd_fd, lbuf, sizeof(lbuf)); + if (lbuflen <= 0 || lbuf[lbuflen-1] != '\n') { printerr(0, "WARNING: handle_gssd_upcall: " "failed reading request\n"); return; } + lbuf[lbuflen-1] = 0; + printerr(2, "%s: '%s'\n", __func__, lbuf); /* find the mechanism name */ @@ -1362,7 +1366,6 @@ handle_gssd_upcall(struct clnt_info *clp) } out: - free(lbuf); free(mech); free(enctypes); free(target); -- cgit