diff options
author | Timo Teräs <timo.teras@iki.fi> | 2014-12-06 12:21:27 -0500 |
---|---|---|
committer | Steve Dickson <steved@redhat.com> | 2014-12-07 10:20:40 -0500 |
commit | 6e5a97f2a1fd2c40a89c0846cb1e8f1b3bfd3a97 (patch) | |
tree | 91f012b0baea92a992dbb030d9e838c3d7778fc2 /utils/gssd/gssd_proc.c | |
parent | 510465f44669be366fdb59f40372a9c6123a0231 (diff) | |
download | nfs-utils-6e5a97f2a1fd2c40a89c0846cb1e8f1b3bfd3a97.tar.gz nfs-utils-6e5a97f2a1fd2c40a89c0846cb1e8f1b3bfd3a97.tar.xz nfs-utils-6e5a97f2a1fd2c40a89c0846cb1e8f1b3bfd3a97.zip |
gssd: talk to kernel using file descriptors instead of FILE
Signed-off-by: Steve Dickson <steved@redhat.com>
Diffstat (limited to 'utils/gssd/gssd_proc.c')
-rw-r--r-- | utils/gssd/gssd_proc.c | 9 |
1 files changed, 6 insertions, 3 deletions
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); |