Message ID | 20180306185842.31049-1-steved@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 03/06/2018 01:58 PM, Steve Dickson wrote: > Signed-off-by: Steve Dickson <steved@redhat.com> > --- > support/nfs/nfs_mntent.c | 8 ++++++-- > utils/blkmapd/device-discovery.c | 6 ++++-- > utils/mount/network.c | 8 ++++++-- > utils/nfsd/nfssvc.c | 5 +++-- > utils/statd/statd.c | 3 ++- > 5 files changed, 21 insertions(+), 9 deletions(-) > > v2: Clean up nfs_addmntent() error handling Committed.... steved. > > diff --git a/support/nfs/nfs_mntent.c b/support/nfs/nfs_mntent.c > index a2118a2..05a4c68 100644 > --- a/support/nfs/nfs_mntent.c > +++ b/support/nfs/nfs_mntent.c > @@ -13,6 +13,7 @@ > #include <ctype.h> /* for isdigit */ > #include <sys/stat.h> /* for umask */ > #include <unistd.h> /* for ftruncate */ > +#include <errno.h> /* for errno */ > > #include "nfs_mntent.h" > #include "nls.h" > @@ -148,9 +149,12 @@ nfs_addmntent (mntFILE *mfp, struct mntent *mnt) { > free(m4); > if (res >= 0) { > res = fflush(mfp->mntent_fp); > - if (res < 0) > + if (res < 0) { > + nfs_error("Cant't flush out mtab: %s", strerror(errno)); > /* Avoid leaving a corrupt mtab file */ > - ftruncate(fileno(mfp->mntent_fp), length); > + if (ftruncate(fileno(mfp->mntent_fp), length)) > + {/* Ignore this failure; Why confuse things */} > + } > } > return (res < 0) ? 1 : 0; > } > diff --git a/utils/blkmapd/device-discovery.c b/utils/blkmapd/device-discovery.c > index b71c949..1afc80f 100644 > --- a/utils/blkmapd/device-discovery.c > +++ b/utils/blkmapd/device-discovery.c > @@ -504,9 +504,11 @@ int main(int argc, char **argv) > close(pidfd); > exit(1); > } > - ftruncate(pidfd, 0); > + if (ftruncate(pidfd, 0) < 0) > + BL_LOG_WARNING("ftruncate on %s failed: m\n", PID_FILE); > sprintf(pidbuf, "%d\n", getpid()); > - write(pidfd, pidbuf, strlen(pidbuf)); > + if (write(pidfd, pidbuf, strlen(pidbuf)) != (ssize_t)strlen(pidbuf)) > + BL_LOG_WARNING("write on %s failed: m\n", PID_FILE); > } > > signal(SIGINT, sig_die); > diff --git a/utils/mount/network.c b/utils/mount/network.c > index 8d6e4c6..9a2c878 100644 > --- a/utils/mount/network.c > +++ b/utils/mount/network.c > @@ -811,8 +811,12 @@ int start_statd(void) > switch (pid) { > case 0: /* child */ > setgroups(0, NULL); > - setgid(0); > - setuid(0); > + if (setgid(0) < 0) > + nfs_error(_("%s: setgid(0) failed: %s"), > + progname, strerror(errno)); > + if (setuid(0) < 0) > + nfs_error(_("%s: setuid(0) failed: %s"), > + progname, strerror(errno)); > execle(START_STATD, START_STATD, NULL, envp); > exit(1); > case -1: /* error */ > diff --git a/utils/nfsd/nfssvc.c b/utils/nfsd/nfssvc.c > index fc36792..7923f5d 100644 > --- a/utils/nfsd/nfssvc.c > +++ b/utils/nfsd/nfssvc.c > @@ -68,7 +68,7 @@ nfssvc_mount_nfsdfs(char *progname) > * mount nfsdfs when nfsd.ko is plugged in. So, ignore the return > * code from it and just check for the "threads" file afterward. > */ > - system("/bin/mount -t nfsd nfsd " NFSD_FS_DIR " >/dev/null 2>&1"); > + err = system("/bin/mount -t nfsd nfsd " NFSD_FS_DIR " >/dev/null 2>&1"); > > err = stat(NFSD_THREAD_FILE, &statbuf); > if (err == 0) > @@ -325,7 +325,8 @@ nfssvc_set_time(const char *type, const int seconds) > /* set same value for lockd */ > fd = open("/proc/sys/fs/nfs/nlm_grace_period", O_WRONLY); > if (fd >= 0) { > - write(fd, nbuf, strlen(nbuf)); > + if (write(fd, nbuf, strlen(nbuf)) != (ssize_t)strlen(nbuf)) > + xlog(L_ERROR, "Unable to write nlm_grace_period : %m"); > close(fd); > } > } > diff --git a/utils/statd/statd.c b/utils/statd/statd.c > index 197d853..563a272 100644 > --- a/utils/statd/statd.c > +++ b/utils/statd/statd.c > @@ -225,7 +225,8 @@ static void set_nlm_port(char *type, int port) > fd = open(pathbuf, O_WRONLY); > if (fd < 0 && errno == ENOENT) { > /* probably module not loaded */ > - system("modprobe lockd"); > + if (system("modprobe lockd")) > + {/* ignore return value */}; > fd = open(pathbuf, O_WRONLY); > } > if (fd >= 0) { > -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/support/nfs/nfs_mntent.c b/support/nfs/nfs_mntent.c index a2118a2..05a4c68 100644 --- a/support/nfs/nfs_mntent.c +++ b/support/nfs/nfs_mntent.c @@ -13,6 +13,7 @@ #include <ctype.h> /* for isdigit */ #include <sys/stat.h> /* for umask */ #include <unistd.h> /* for ftruncate */ +#include <errno.h> /* for errno */ #include "nfs_mntent.h" #include "nls.h" @@ -148,9 +149,12 @@ nfs_addmntent (mntFILE *mfp, struct mntent *mnt) { free(m4); if (res >= 0) { res = fflush(mfp->mntent_fp); - if (res < 0) + if (res < 0) { + nfs_error("Cant't flush out mtab: %s", strerror(errno)); /* Avoid leaving a corrupt mtab file */ - ftruncate(fileno(mfp->mntent_fp), length); + if (ftruncate(fileno(mfp->mntent_fp), length)) + {/* Ignore this failure; Why confuse things */} + } } return (res < 0) ? 1 : 0; } diff --git a/utils/blkmapd/device-discovery.c b/utils/blkmapd/device-discovery.c index b71c949..1afc80f 100644 --- a/utils/blkmapd/device-discovery.c +++ b/utils/blkmapd/device-discovery.c @@ -504,9 +504,11 @@ int main(int argc, char **argv) close(pidfd); exit(1); } - ftruncate(pidfd, 0); + if (ftruncate(pidfd, 0) < 0) + BL_LOG_WARNING("ftruncate on %s failed: m\n", PID_FILE); sprintf(pidbuf, "%d\n", getpid()); - write(pidfd, pidbuf, strlen(pidbuf)); + if (write(pidfd, pidbuf, strlen(pidbuf)) != (ssize_t)strlen(pidbuf)) + BL_LOG_WARNING("write on %s failed: m\n", PID_FILE); } signal(SIGINT, sig_die); diff --git a/utils/mount/network.c b/utils/mount/network.c index 8d6e4c6..9a2c878 100644 --- a/utils/mount/network.c +++ b/utils/mount/network.c @@ -811,8 +811,12 @@ int start_statd(void) switch (pid) { case 0: /* child */ setgroups(0, NULL); - setgid(0); - setuid(0); + if (setgid(0) < 0) + nfs_error(_("%s: setgid(0) failed: %s"), + progname, strerror(errno)); + if (setuid(0) < 0) + nfs_error(_("%s: setuid(0) failed: %s"), + progname, strerror(errno)); execle(START_STATD, START_STATD, NULL, envp); exit(1); case -1: /* error */ diff --git a/utils/nfsd/nfssvc.c b/utils/nfsd/nfssvc.c index fc36792..7923f5d 100644 --- a/utils/nfsd/nfssvc.c +++ b/utils/nfsd/nfssvc.c @@ -68,7 +68,7 @@ nfssvc_mount_nfsdfs(char *progname) * mount nfsdfs when nfsd.ko is plugged in. So, ignore the return * code from it and just check for the "threads" file afterward. */ - system("/bin/mount -t nfsd nfsd " NFSD_FS_DIR " >/dev/null 2>&1"); + err = system("/bin/mount -t nfsd nfsd " NFSD_FS_DIR " >/dev/null 2>&1"); err = stat(NFSD_THREAD_FILE, &statbuf); if (err == 0) @@ -325,7 +325,8 @@ nfssvc_set_time(const char *type, const int seconds) /* set same value for lockd */ fd = open("/proc/sys/fs/nfs/nlm_grace_period", O_WRONLY); if (fd >= 0) { - write(fd, nbuf, strlen(nbuf)); + if (write(fd, nbuf, strlen(nbuf)) != (ssize_t)strlen(nbuf)) + xlog(L_ERROR, "Unable to write nlm_grace_period : %m"); close(fd); } } diff --git a/utils/statd/statd.c b/utils/statd/statd.c index 197d853..563a272 100644 --- a/utils/statd/statd.c +++ b/utils/statd/statd.c @@ -225,7 +225,8 @@ static void set_nlm_port(char *type, int port) fd = open(pathbuf, O_WRONLY); if (fd < 0 && errno == ENOENT) { /* probably module not loaded */ - system("modprobe lockd"); + if (system("modprobe lockd")) + {/* ignore return value */}; fd = open(pathbuf, O_WRONLY); } if (fd >= 0) {
Signed-off-by: Steve Dickson <steved@redhat.com> --- support/nfs/nfs_mntent.c | 8 ++++++-- utils/blkmapd/device-discovery.c | 6 ++++-- utils/mount/network.c | 8 ++++++-- utils/nfsd/nfssvc.c | 5 +++-- utils/statd/statd.c | 3 ++- 5 files changed, 21 insertions(+), 9 deletions(-) v2: Clean up nfs_addmntent() error handling