diff options
author | Neil Brown <neilb@suse.de> | 2007-01-11 12:45:48 +1100 |
---|---|---|
committer | Neil Brown <neilb@suse.de> | 2007-01-11 12:45:48 +1100 |
commit | 8fd9fad1ea4b25b8962d70133f476650ef0637b0 (patch) | |
tree | ebc6a359e751f4dcc7167ed1cbe83c86d3a9e0c2 /utils/gssd | |
parent | 95b414a6038d1d4efb1b1ec90c2da17def7064b2 (diff) | |
download | nfs-utils-8fd9fad1ea4b25b8962d70133f476650ef0637b0.tar.gz nfs-utils-8fd9fad1ea4b25b8962d70133f476650ef0637b0.tar.xz nfs-utils-8fd9fad1ea4b25b8962d70133f476650ef0637b0.zip |
Error check messages sent to the kernel.
And make sure that if we fail to export a filesystem in mountd,
then we don't try to get a filehandle on it, or a deadlock
might occur.
Diffstat (limited to 'utils/gssd')
-rw-r--r-- | utils/gssd/cacheio.c | 6 | ||||
-rw-r--r-- | utils/gssd/cacheio.h | 2 | ||||
-rw-r--r-- | utils/gssd/svcgssd_proc.c | 5 |
3 files changed, 8 insertions, 5 deletions
diff --git a/utils/gssd/cacheio.c b/utils/gssd/cacheio.c index 75c7a5d..f2f2960 100644 --- a/utils/gssd/cacheio.c +++ b/utils/gssd/cacheio.c @@ -173,11 +173,13 @@ void qword_printint(FILE *f, int num) printerr(2, "%d ", num); } -void qword_eol(FILE *f) +int qword_eol(FILE *f) { + int err; fprintf(f,"\n"); - fflush(f); + err = fflush(f); printerr(2, "\n"); + return err; } diff --git a/utils/gssd/cacheio.h b/utils/gssd/cacheio.h index cc97b36..dfff258 100644 --- a/utils/gssd/cacheio.h +++ b/utils/gssd/cacheio.h @@ -40,7 +40,7 @@ void qword_addeol(char **bpp, int *lp); void qword_print(FILE *f, char *str); void qword_printhex(FILE *f, char *str, int slen); void qword_printint(FILE *f, int num); -void qword_eol(FILE *f); +int qword_eol(FILE *f); int readline(int fd, char **buf, int *lenp); int qword_get(char **bpp, char *dest, int bufsize); int qword_get_int(char **bpp, int *anint); diff --git a/utils/gssd/svcgssd_proc.c b/utils/gssd/svcgssd_proc.c index 7981399..4037159 100644 --- a/utils/gssd/svcgssd_proc.c +++ b/utils/gssd/svcgssd_proc.c @@ -72,6 +72,7 @@ do_svc_downcall(gss_buffer_desc *out_handle, struct svc_cred *cred, FILE *f; int i; char *fname = NULL; + int err; printerr(1, "doing downcall\n"); if ((fname = mech2file(mech)) == NULL) @@ -93,9 +94,9 @@ do_svc_downcall(gss_buffer_desc *out_handle, struct svc_cred *cred, qword_printint(f, cred->cr_groups[i]); qword_print(f, fname); qword_printhex(f, context_token->value, context_token->length); - qword_eol(f); + err = qword_eol(f); fclose(f); - return 0; + return err; out_err: printerr(0, "WARNING: downcall failed\n"); return -1; |