summaryrefslogtreecommitdiffstats
path: root/utils/gssd/gssd_proc.c
diff options
context:
space:
mode:
authorTimo Teräs <timo.teras@iki.fi>2014-12-06 12:21:27 -0500
committerSteve Dickson <steved@redhat.com>2014-12-07 10:20:40 -0500
commit6e5a97f2a1fd2c40a89c0846cb1e8f1b3bfd3a97 (patch)
tree91f012b0baea92a992dbb030d9e838c3d7778fc2 /utils/gssd/gssd_proc.c
parent510465f44669be366fdb59f40372a9c6123a0231 (diff)
downloadnfs-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.c9
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);