From: J. Bruce Fields Date: Mon, 6 Aug 2012 12:57:19 +0000 (-0400) Subject: rpc.gssd: handle error to open toplevel directory X-Git-Tag: debian/1%1.2.8-1~11^2^2~98 X-Git-Url: https://git.decadent.org.uk/gitweb/?a=commitdiff_plain;h=e4e5dadd7685415059173e438a5710a9e51ffbff;p=nfs-utils.git rpc.gssd: handle error to open toplevel directory From: "J. Bruce Fields" Reverse the sense of the test here, and also add debugging and cleanup in the error case. (Though the lack of cleanup isn't currently a problem in practice since we'll eventually exit in this case.) Signed-off-by: J. Bruce Fields Signed-off-by: Steve Dickson --- diff --git a/utils/gssd/gssd_main_loop.c b/utils/gssd/gssd_main_loop.c index 6914687..142c8c5 100644 --- a/utils/gssd/gssd_main_loop.c +++ b/utils/gssd/gssd_main_loop.c @@ -121,11 +121,13 @@ topdirs_add_entry(struct dirent *dent) } snprintf(tdi->dirname, PATH_MAX, "%s/%s", pipefs_dir, dent->d_name); tdi->fd = open(tdi->dirname, O_RDONLY); - if (tdi->fd != -1) { - fcntl(tdi->fd, F_SETSIG, DNOTIFY_SIGNAL); - fcntl(tdi->fd, F_NOTIFY, - DN_CREATE|DN_DELETE|DN_MODIFY|DN_MULTISHOT); + if (tdi->fd == -1) { + printerr(0, "ERROR: failed to open %s\n", tdi->dirname); + free(tdi); + return -1; } + fcntl(tdi->fd, F_SETSIG, DNOTIFY_SIGNAL); + fcntl(tdi->fd, F_NOTIFY, DN_CREATE|DN_DELETE|DN_MODIFY|DN_MULTISHOT); TAILQ_INSERT_HEAD(&topdirs_list, tdi, list); return 0;