* [PATCH] nfs-utils: Removed a number of warn_unused_result warnings
@ 2009-03-23 14:08 Steve Dickson
[not found] ` <49C797C6.8030102-AfCzQyP5zfLQT0dZR+AlfA@public.gmane.org>
0 siblings, 1 reply; 9+ messages in thread
From: Steve Dickson @ 2009-03-23 14:08 UTC (permalink / raw)
To: Linux NFS Mailing list
Here is a patch that removes a number of annoying 'warn_unused_result'
warnings that have recently popped up in Fedora builds.
Its probably a good thing to log these failures, but there is
really not much we can do about them so I've logged the failures
as warnings...
This exercise also illuminates all the different ways there
are to call syslog()... We really need to looking into creating
exactly one way for all apps in nfs-utils to log messages to
syslog().. Yeah.. Yeah... I know... Patches are welcome! ;-)
steved.
In recent Fedora builds, the '-D _FORTIFY_SOURCE=2' compile
flag has been set. This cause warnings to be generated when
return values from reads/writes (and other calls) are not
checked. The patch address those warnings.
Signed-off-by: Steve Dickson <steved@redhat.com>
------------------------------------------
diff -up nfs-utils-1.1.5/support/nfs/cacheio.c.orig nfs-utils-1.1.5/support/nfs/cacheio.c
--- nfs-utils-1.1.5/support/nfs/cacheio.c.orig 2009-03-05 06:42:56.000000000 -0500
+++ nfs-utils-1.1.5/support/nfs/cacheio.c 2009-03-23 09:41:54.000000000 -0400
@@ -24,6 +24,7 @@
#include <sys/stat.h>
#include <fcntl.h>
#include <time.h>
+#include <errno.h>
void qword_add(char **bpp, int *lp, char *str)
{
@@ -125,7 +126,10 @@ void qword_print(FILE *f, char *str)
char *bp = qword_buf;
int len = sizeof(qword_buf);
qword_add(&bp, &len, str);
- fwrite(qword_buf, bp-qword_buf, 1, f);
+ if (fwrite(qword_buf, bp-qword_buf, 1, f) != 1) {
+ xlog_warn("qword_print: fwrite failed: errno %d (%s)",
+ errno, strerror(errno));
+ }
}
void qword_printhex(FILE *f, char *str, int slen)
@@ -133,7 +137,10 @@ void qword_printhex(FILE *f, char *str,
char *bp = qword_buf;
int len = sizeof(qword_buf);
qword_addhex(&bp, &len, str, slen);
- fwrite(qword_buf, bp-qword_buf, 1, f);
+ if (fwrite(qword_buf, bp-qword_buf, 1, f) != 1) {
+ xlog_warn("qword_printhex: fwrite failed: errno %d (%s)",
+ errno, strerror(errno));
+ }
}
void qword_printint(FILE *f, int num)
@@ -318,7 +325,10 @@ cache_flush(int force)
sprintf(path, "/proc/net/rpc/%s/flush", cachelist[c]);
fd = open(path, O_RDWR);
if (fd >= 0) {
- write(fd, stime, strlen(stime));
+ if (write(fd, stime, strlen(stime)) != strlen(stime)) {
+ xlog_warn("Writing to '%s' failed: errno %d (%s)",
+ path, errno, strerror(errno));
+ }
close(fd);
}
}
diff -up nfs-utils-1.1.5/tools/locktest/testlk.c.orig nfs-utils-1.1.5/tools/locktest/testlk.c
--- nfs-utils-1.1.5/tools/locktest/testlk.c.orig 2009-03-05 06:42:56.000000000 -0500
+++ nfs-utils-1.1.5/tools/locktest/testlk.c 2009-03-23 08:33:10.000000000 -0400
@@ -81,7 +81,7 @@ main(int argc, char **argv)
if (fl.l_type == F_UNLCK) {
printf("%s: no conflicting lock\n", fname);
} else {
- printf("%s: conflicting lock by %d on (%ld;%ld)\n",
+ printf("%s: conflicting lock by %d on (%lld;%lld)\n",
fname, fl.l_pid, fl.l_start, fl.l_len);
}
return 0;
diff -up nfs-utils-1.1.5/utils/gssd/svcgssd.c.orig nfs-utils-1.1.5/utils/gssd/svcgssd.c
--- nfs-utils-1.1.5/utils/gssd/svcgssd.c.orig 2009-03-05 06:42:56.000000000 -0500
+++ nfs-utils-1.1.5/utils/gssd/svcgssd.c 2009-03-23 08:49:49.000000000 -0400
@@ -132,7 +132,11 @@ release_parent(void)
int status;
if (pipefds[1] > 0) {
- write(pipefds[1], &status, 1);
+ if (write(pipefds[1], &status, 1) != 1) {
+ printerr(1,
+ "WARN: writing to parent pipe failed: errno %d (%s)\n",
+ errno, strerror(errno));
+ }
close(pipefds[1]);
pipefds[1] = -1;
}
diff -up nfs-utils-1.1.5/utils/idmapd/idmapd.c.orig nfs-utils-1.1.5/utils/idmapd/idmapd.c
--- nfs-utils-1.1.5/utils/idmapd/idmapd.c.orig 2009-03-05 06:42:56.000000000 -0500
+++ nfs-utils-1.1.5/utils/idmapd/idmapd.c 2009-03-23 08:53:44.000000000 -0400
@@ -169,7 +169,10 @@ flush_nfsd_cache(char *path, time_t now)
fd = open(path, O_RDWR);
if (fd == -1)
return -1;
- write(fd, stime, strlen(stime));
+ if (write(fd, stime, strlen(stime)) != strlen(stime)) {
+ errx(1, "Flushing nfsd cache failed: errno %d (%s)",
+ errno, strerror(errno));
+ }
close(fd);
return 0;
}
@@ -988,7 +991,10 @@ release_parent(void)
int status;
if (pipefds[1] > 0) {
- write(pipefds[1], &status, 1);
+ if (write(pipefds[1], &status, 1) != 1) {
+ err(1, "Writing to parent pipe failed: errno %d (%s)\n",
+ errno, strerror(errno));
+ }
close(pipefds[1]);
pipefds[1] = -1;
}
diff -up nfs-utils-1.1.5/utils/mount/fstab.c.orig nfs-utils-1.1.5/utils/mount/fstab.c
--- nfs-utils-1.1.5/utils/mount/fstab.c.orig 2009-03-05 06:42:56.000000000 -0500
+++ nfs-utils-1.1.5/utils/mount/fstab.c 2009-03-23 08:44:42.000000000 -0400
@@ -546,8 +546,12 @@ update_mtab (const char *dir, struct mnt
* from the present mtab before renaming.
*/
struct stat sbuf;
- if (stat (MOUNTED, &sbuf) == 0)
- chown (MOUNTED_TEMP, sbuf.st_uid, sbuf.st_gid);
+ if (stat (MOUNTED, &sbuf) == 0) {
+ if (chown (MOUNTED_TEMP, sbuf.st_uid, sbuf.st_gid) < 0) {
+ nfs_error(_("%s: error changing owner of %s: %s"),
+ progname, MOUNTED_TEMP, strerror (errno));
+ }
+ }
}
/* rename mtemp to mtab */
diff -up nfs-utils-1.1.5/utils/statd/monitor.c.orig nfs-utils-1.1.5/utils/statd/monitor.c
--- nfs-utils-1.1.5/utils/statd/monitor.c.orig 2009-03-05 06:42:56.000000000 -0500
+++ nfs-utils-1.1.5/utils/statd/monitor.c 2009-03-23 09:25:20.000000000 -0400
@@ -204,7 +204,10 @@ sm_mon_1_svc(struct mon *argp, struct sv
e += sprintf(e, "%02x", 0xff & (argp->priv[i]));
if (e+1-buf != LINELEN) abort();
e += sprintf(e, " %s %s\n", mon_name, my_name);
- write(fd, buf, e-buf);
+ if (write(fd, buf, e-buf) != (e-buf)) {
+ note(N_WARNING, "writing to %s failed: errno %d (%s)",
+ path, errno, strerror(errno));
+ }
}
free(path);
diff -up nfs-utils-1.1.5/utils/statd/sm-notify.c.orig nfs-utils-1.1.5/utils/statd/sm-notify.c
--- nfs-utils-1.1.5/utils/statd/sm-notify.c.orig 2009-03-23 08:26:22.000000000 -0400
+++ nfs-utils-1.1.5/utils/statd/sm-notify.c 2009-03-23 08:58:36.000000000 -0400
@@ -784,7 +784,10 @@ static int record_pid(void)
fd = open("/var/run/sm-notify.pid", O_CREAT|O_EXCL|O_WRONLY, 0600);
if (fd < 0)
return 0;
- write(fd, pid, strlen(pid));
+ if (write(fd, pid, strlen(pid)) != strlen(pid)) {
+ nsm_log(LOG_WARNING, "Writing to pid file failed: errno %d(%s)",
+ errno, strerror(errno));
+ }
close(fd);
return 1;
}
@@ -820,12 +823,16 @@ static void drop_privs(void)
static void set_kernel_nsm_state(int state)
{
int fd;
+ const char *file = "/proc/sys/fs/nfs/nsm_local_state";
- fd = open("/proc/sys/fs/nfs/nsm_local_state",O_WRONLY);
+ fd = open(file ,O_WRONLY);
if (fd >= 0) {
char buf[20];
snprintf(buf, sizeof(buf), "%d", state);
- write(fd, buf, strlen(buf));
+ if (write(fd, buf, strlen(buf)) != strlen(buf)) {
+ nsm_log(LOG_WARNING, "Writing to '%s' failed: errno %d (%s)",
+ file, errno, strerror(errno));
+ }
close(fd);
}
}
diff -up nfs-utils-1.1.5/utils/statd/statd.c.orig nfs-utils-1.1.5/utils/statd/statd.c
--- nfs-utils-1.1.5/utils/statd/statd.c.orig 2009-03-05 06:42:56.000000000 -0500
+++ nfs-utils-1.1.5/utils/statd/statd.c 2009-03-23 09:21:27.000000000 -0400
@@ -179,14 +179,20 @@ static void create_pidfile(void)
pidfile, strerror(errno));
fprintf(fp, "%d\n", getpid());
pidfd = dup(fileno(fp));
- if (fclose(fp) < 0)
- note(N_WARNING, "Flushing pid file failed.\n");
+ if (fclose(fp) < 0) {
+ note(N_WARNING, "Flushing pid file failed: errno %d (%s)\n",
+ errno, strerror(errno));
+ }
}
static void truncate_pidfile(void)
{
- if (pidfd >= 0)
- ftruncate(pidfd, 0);
+ if (pidfd >= 0) {
+ if (ftruncate(pidfd, 0) < 0) {
+ note(N_WARNING, "truncating pid file failed: errno %d (%s)\n",
+ errno, strerror(errno));
+ }
+ }
}
static void drop_privs(void)
@@ -207,9 +213,12 @@ static void drop_privs(void)
/* better chown the pid file before dropping, as if it
* if over nfs we might loose access
*/
- if (pidfd >= 0)
- fchown(pidfd, st.st_uid, st.st_gid);
-
+ if (pidfd >= 0) {
+ if (fchown(pidfd, st.st_uid, st.st_gid) < 0) {
+ note(N_ERROR, "Unable to change owner of %s: %d (%s)",
+ SM_DIR, strerror (errno));
+ }
+ }
setgroups(0, NULL);
if (setgid(st.st_gid) == -1
|| setuid(st.st_uid) == -1) {
@@ -495,7 +504,10 @@ int main (int argc, char **argv)
/* If we got this far, we have successfully started, so notify parent */
if (pipefds[1] > 0) {
status = 0;
- write(pipefds[1], &status, 1);
+ if (write(pipefds[1], &status, 1) != 1) {
+ note(N_WARNING, "writing to parent pipe failed: errno %d (%s)\n",
+ errno, strerror(errno));
+ }
close(pipefds[1]);
pipefds[1] = -1;
}
@@ -534,17 +546,23 @@ static void
load_state_number(void)
{
int fd;
+ const char *file = "/proc/sys/fs/nfs/nsm_local_state";
if ((fd = open(SM_STAT_PATH, O_RDONLY)) == -1)
return;
- read(fd, &MY_STATE, sizeof(MY_STATE));
+ if (read(fd, &MY_STATE, sizeof(MY_STATE)) != sizeof(MY_STATE)) {
+ note(N_WARNING, "Unable to read state from '%s': errno %d (%s)",
+ SM_STAT_PATH, errno, strerror(errno));
+ }
close(fd);
- fd = open("/proc/sys/fs/nfs/nsm_local_state",O_WRONLY);
+ fd = open(file, O_WRONLY);
if (fd >= 0) {
char buf[20];
snprintf(buf, sizeof(buf), "%d", MY_STATE);
- write(fd, buf, strlen(buf));
+ if (write(fd, buf, strlen(buf)) != strlen(buf))
+ note(N_WARNING, "Writing to '%s' failed: errno %d (%s)",
+ file, errno, strerror(errno));
close(fd);
}
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] nfs-utils: Removed a number of warn_unused_result warnings
[not found] ` <49C797C6.8030102-AfCzQyP5zfLQT0dZR+AlfA@public.gmane.org>
@ 2009-03-24 16:19 ` Chuck Lever
2009-03-24 16:56 ` Steve Dickson
0 siblings, 1 reply; 9+ messages in thread
From: Chuck Lever @ 2009-03-24 16:19 UTC (permalink / raw)
To: Steve Dickson; +Cc: Linux NFS Mailing list
Hi Steve-
I've actually already addressed all the cases you found under utils/
statd/... my re-writes replace both nsm_log() and note() with calls to
xlog(), and add return code checking to the write(2) calls.
Also, note that you can use the "%m" format specifier to generate the
same string you get from strerror(errno).
On Mar 23, 2009, at 10:08 AM, Steve Dickson wrote:
> Here is a patch that removes a number of annoying 'warn_unused_result'
> warnings that have recently popped up in Fedora builds.
>
> Its probably a good thing to log these failures, but there is
> really not much we can do about them so I've logged the failures
> as warnings...
>
> This exercise also illuminates all the different ways there
> are to call syslog()... We really need to looking into creating
> exactly one way for all apps in nfs-utils to log messages to
> syslog().. Yeah.. Yeah... I know... Patches are welcome! ;-)
>
> steved.
>
>
> In recent Fedora builds, the '-D _FORTIFY_SOURCE=2' compile
> flag has been set. This cause warnings to be generated when
> return values from reads/writes (and other calls) are not
> checked. The patch address those warnings.
>
> Signed-off-by: Steve Dickson <steved@redhat.com>
> ------------------------------------------
>
> diff -up nfs-utils-1.1.5/support/nfs/cacheio.c.orig nfs-utils-1.1.5/
> support/nfs/cacheio.c
> --- nfs-utils-1.1.5/support/nfs/cacheio.c.orig 2009-03-05
> 06:42:56.000000000 -0500
> +++ nfs-utils-1.1.5/support/nfs/cacheio.c 2009-03-23
> 09:41:54.000000000 -0400
> @@ -24,6 +24,7 @@
> #include <sys/stat.h>
> #include <fcntl.h>
> #include <time.h>
> +#include <errno.h>
>
> void qword_add(char **bpp, int *lp, char *str)
> {
> @@ -125,7 +126,10 @@ void qword_print(FILE *f, char *str)
> char *bp = qword_buf;
> int len = sizeof(qword_buf);
> qword_add(&bp, &len, str);
> - fwrite(qword_buf, bp-qword_buf, 1, f);
> + if (fwrite(qword_buf, bp-qword_buf, 1, f) != 1) {
> + xlog_warn("qword_print: fwrite failed: errno %d (%s)",
> + errno, strerror(errno));
> + }
> }
>
> void qword_printhex(FILE *f, char *str, int slen)
> @@ -133,7 +137,10 @@ void qword_printhex(FILE *f, char *str,
> char *bp = qword_buf;
> int len = sizeof(qword_buf);
> qword_addhex(&bp, &len, str, slen);
> - fwrite(qword_buf, bp-qword_buf, 1, f);
> + if (fwrite(qword_buf, bp-qword_buf, 1, f) != 1) {
> + xlog_warn("qword_printhex: fwrite failed: errno %d (%s)",
> + errno, strerror(errno));
> + }
> }
>
> void qword_printint(FILE *f, int num)
> @@ -318,7 +325,10 @@ cache_flush(int force)
> sprintf(path, "/proc/net/rpc/%s/flush", cachelist[c]);
> fd = open(path, O_RDWR);
> if (fd >= 0) {
> - write(fd, stime, strlen(stime));
> + if (write(fd, stime, strlen(stime)) != strlen(stime)) {
> + xlog_warn("Writing to '%s' failed: errno %d (%s)",
> + path, errno, strerror(errno));
> + }
> close(fd);
> }
> }
> diff -up nfs-utils-1.1.5/tools/locktest/testlk.c.orig nfs-
> utils-1.1.5/tools/locktest/testlk.c
> --- nfs-utils-1.1.5/tools/locktest/testlk.c.orig 2009-03-05
> 06:42:56.000000000 -0500
> +++ nfs-utils-1.1.5/tools/locktest/testlk.c 2009-03-23
> 08:33:10.000000000 -0400
> @@ -81,7 +81,7 @@ main(int argc, char **argv)
> if (fl.l_type == F_UNLCK) {
> printf("%s: no conflicting lock\n", fname);
> } else {
> - printf("%s: conflicting lock by %d on (%ld;%ld)\n",
> + printf("%s: conflicting lock by %d on (%lld;%lld)\n",
> fname, fl.l_pid, fl.l_start, fl.l_len);
> }
> return 0;
> diff -up nfs-utils-1.1.5/utils/gssd/svcgssd.c.orig nfs-utils-1.1.5/
> utils/gssd/svcgssd.c
> --- nfs-utils-1.1.5/utils/gssd/svcgssd.c.orig 2009-03-05
> 06:42:56.000000000 -0500
> +++ nfs-utils-1.1.5/utils/gssd/svcgssd.c 2009-03-23
> 08:49:49.000000000 -0400
> @@ -132,7 +132,11 @@ release_parent(void)
> int status;
>
> if (pipefds[1] > 0) {
> - write(pipefds[1], &status, 1);
> + if (write(pipefds[1], &status, 1) != 1) {
> + printerr(1,
> + "WARN: writing to parent pipe failed: errno %d (%s)\n",
> + errno, strerror(errno));
> + }
> close(pipefds[1]);
> pipefds[1] = -1;
> }
> diff -up nfs-utils-1.1.5/utils/idmapd/idmapd.c.orig nfs-utils-1.1.5/
> utils/idmapd/idmapd.c
> --- nfs-utils-1.1.5/utils/idmapd/idmapd.c.orig 2009-03-05
> 06:42:56.000000000 -0500
> +++ nfs-utils-1.1.5/utils/idmapd/idmapd.c 2009-03-23
> 08:53:44.000000000 -0400
> @@ -169,7 +169,10 @@ flush_nfsd_cache(char *path, time_t now)
> fd = open(path, O_RDWR);
> if (fd == -1)
> return -1;
> - write(fd, stime, strlen(stime));
> + if (write(fd, stime, strlen(stime)) != strlen(stime)) {
> + errx(1, "Flushing nfsd cache failed: errno %d (%s)",
> + errno, strerror(errno));
> + }
> close(fd);
> return 0;
> }
> @@ -988,7 +991,10 @@ release_parent(void)
> int status;
>
> if (pipefds[1] > 0) {
> - write(pipefds[1], &status, 1);
> + if (write(pipefds[1], &status, 1) != 1) {
> + err(1, "Writing to parent pipe failed: errno %d (%s)\n",
> + errno, strerror(errno));
> + }
> close(pipefds[1]);
> pipefds[1] = -1;
> }
> diff -up nfs-utils-1.1.5/utils/mount/fstab.c.orig nfs-utils-1.1.5/
> utils/mount/fstab.c
> --- nfs-utils-1.1.5/utils/mount/fstab.c.orig 2009-03-05
> 06:42:56.000000000 -0500
> +++ nfs-utils-1.1.5/utils/mount/fstab.c 2009-03-23
> 08:44:42.000000000 -0400
> @@ -546,8 +546,12 @@ update_mtab (const char *dir, struct mnt
> * from the present mtab before renaming.
> */
> struct stat sbuf;
> - if (stat (MOUNTED, &sbuf) == 0)
> - chown (MOUNTED_TEMP, sbuf.st_uid, sbuf.st_gid);
> + if (stat (MOUNTED, &sbuf) == 0) {
> + if (chown (MOUNTED_TEMP, sbuf.st_uid, sbuf.st_gid) < 0) {
> + nfs_error(_("%s: error changing owner of %s: %s"),
> + progname, MOUNTED_TEMP, strerror (errno));
> + }
> + }
> }
>
> /* rename mtemp to mtab */
> diff -up nfs-utils-1.1.5/utils/statd/monitor.c.orig nfs-utils-1.1.5/
> utils/statd/monitor.c
> --- nfs-utils-1.1.5/utils/statd/monitor.c.orig 2009-03-05
> 06:42:56.000000000 -0500
> +++ nfs-utils-1.1.5/utils/statd/monitor.c 2009-03-23
> 09:25:20.000000000 -0400
> @@ -204,7 +204,10 @@ sm_mon_1_svc(struct mon *argp, struct sv
> e += sprintf(e, "%02x", 0xff & (argp->priv[i]));
> if (e+1-buf != LINELEN) abort();
> e += sprintf(e, " %s %s\n", mon_name, my_name);
> - write(fd, buf, e-buf);
> + if (write(fd, buf, e-buf) != (e-buf)) {
> + note(N_WARNING, "writing to %s failed: errno %d (%s)",
> + path, errno, strerror(errno));
> + }
> }
>
> free(path);
> diff -up nfs-utils-1.1.5/utils/statd/sm-notify.c.orig nfs-
> utils-1.1.5/utils/statd/sm-notify.c
> --- nfs-utils-1.1.5/utils/statd/sm-notify.c.orig 2009-03-23
> 08:26:22.000000000 -0400
> +++ nfs-utils-1.1.5/utils/statd/sm-notify.c 2009-03-23
> 08:58:36.000000000 -0400
> @@ -784,7 +784,10 @@ static int record_pid(void)
> fd = open("/var/run/sm-notify.pid", O_CREAT|O_EXCL|O_WRONLY, 0600);
> if (fd < 0)
> return 0;
> - write(fd, pid, strlen(pid));
> + if (write(fd, pid, strlen(pid)) != strlen(pid)) {
> + nsm_log(LOG_WARNING, "Writing to pid file failed: errno %d(%s)",
> + errno, strerror(errno));
> + }
> close(fd);
> return 1;
> }
> @@ -820,12 +823,16 @@ static void drop_privs(void)
> static void set_kernel_nsm_state(int state)
> {
> int fd;
> + const char *file = "/proc/sys/fs/nfs/nsm_local_state";
>
> - fd = open("/proc/sys/fs/nfs/nsm_local_state",O_WRONLY);
> + fd = open(file ,O_WRONLY);
> if (fd >= 0) {
> char buf[20];
> snprintf(buf, sizeof(buf), "%d", state);
> - write(fd, buf, strlen(buf));
> + if (write(fd, buf, strlen(buf)) != strlen(buf)) {
> + nsm_log(LOG_WARNING, "Writing to '%s' failed: errno %d (%s)",
> + file, errno, strerror(errno));
> + }
> close(fd);
> }
> }
> diff -up nfs-utils-1.1.5/utils/statd/statd.c.orig nfs-utils-1.1.5/
> utils/statd/statd.c
> --- nfs-utils-1.1.5/utils/statd/statd.c.orig 2009-03-05
> 06:42:56.000000000 -0500
> +++ nfs-utils-1.1.5/utils/statd/statd.c 2009-03-23
> 09:21:27.000000000 -0400
> @@ -179,14 +179,20 @@ static void create_pidfile(void)
> pidfile, strerror(errno));
> fprintf(fp, "%d\n", getpid());
> pidfd = dup(fileno(fp));
> - if (fclose(fp) < 0)
> - note(N_WARNING, "Flushing pid file failed.\n");
> + if (fclose(fp) < 0) {
> + note(N_WARNING, "Flushing pid file failed: errno %d (%s)\n",
> + errno, strerror(errno));
> + }
> }
>
> static void truncate_pidfile(void)
> {
> - if (pidfd >= 0)
> - ftruncate(pidfd, 0);
> + if (pidfd >= 0) {
> + if (ftruncate(pidfd, 0) < 0) {
> + note(N_WARNING, "truncating pid file failed: errno %d (%s)\n",
> + errno, strerror(errno));
> + }
> + }
> }
>
> static void drop_privs(void)
> @@ -207,9 +213,12 @@ static void drop_privs(void)
> /* better chown the pid file before dropping, as if it
> * if over nfs we might loose access
> */
> - if (pidfd >= 0)
> - fchown(pidfd, st.st_uid, st.st_gid);
> -
> + if (pidfd >= 0) {
> + if (fchown(pidfd, st.st_uid, st.st_gid) < 0) {
> + note(N_ERROR, "Unable to change owner of %s: %d (%s)",
> + SM_DIR, strerror (errno));
> + }
> + }
> setgroups(0, NULL);
> if (setgid(st.st_gid) == -1
> || setuid(st.st_uid) == -1) {
> @@ -495,7 +504,10 @@ int main (int argc, char **argv)
> /* If we got this far, we have successfully started, so notify
> parent */
> if (pipefds[1] > 0) {
> status = 0;
> - write(pipefds[1], &status, 1);
> + if (write(pipefds[1], &status, 1) != 1) {
> + note(N_WARNING, "writing to parent pipe failed: errno %d (%s)\n",
> + errno, strerror(errno));
> + }
> close(pipefds[1]);
> pipefds[1] = -1;
> }
> @@ -534,17 +546,23 @@ static void
> load_state_number(void)
> {
> int fd;
> + const char *file = "/proc/sys/fs/nfs/nsm_local_state";
>
> if ((fd = open(SM_STAT_PATH, O_RDONLY)) == -1)
> return;
>
> - read(fd, &MY_STATE, sizeof(MY_STATE));
> + if (read(fd, &MY_STATE, sizeof(MY_STATE)) != sizeof(MY_STATE)) {
> + note(N_WARNING, "Unable to read state from '%s': errno %d (%s)",
> + SM_STAT_PATH, errno, strerror(errno));
> + }
> close(fd);
> - fd = open("/proc/sys/fs/nfs/nsm_local_state",O_WRONLY);
> + fd = open(file, O_WRONLY);
> if (fd >= 0) {
> char buf[20];
> snprintf(buf, sizeof(buf), "%d", MY_STATE);
> - write(fd, buf, strlen(buf));
> + if (write(fd, buf, strlen(buf)) != strlen(buf))
> + note(N_WARNING, "Writing to '%s' failed: errno %d (%s)",
> + file, errno, strerror(errno));
> close(fd);
> }
>
> --
> 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
--
Chuck Lever
chuck[dot]lever[at]oracle[dot]com
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] nfs-utils: Removed a number of warn_unused_result warnings
2009-03-24 16:19 ` Chuck Lever
@ 2009-03-24 16:56 ` Steve Dickson
[not found] ` <49C910C3.2090700-AfCzQyP5zfLQT0dZR+AlfA@public.gmane.org>
0 siblings, 1 reply; 9+ messages in thread
From: Steve Dickson @ 2009-03-24 16:56 UTC (permalink / raw)
To: Chuck Lever; +Cc: Linux NFS Mailing list
Chuck Lever wrote:
> I've actually already addressed all the cases you found under
> utils/statd/... my re-writes replace both nsm_log() and note() with
> calls to xlog(), and add return code checking to the write(2) calls.
Sorry about that... but I already did the commit... since I wanted to
get some testing asap.. so go head and send me the parts I broke
and I will do the forward port...
>
> Also, note that you can use the "%m" format specifier to generate the
> same string you get from strerror(errno).
Yeah.. I knew that... but I thought there some memory corruption
or service denial issue with using "%m" so I've always stuck
with '%d (%s)'.
steved.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] nfs-utils: Removed a number of warn_unused_result warnings
[not found] ` <49C910C3.2090700-AfCzQyP5zfLQT0dZR+AlfA@public.gmane.org>
@ 2009-03-24 17:08 ` Chuck Lever
2009-03-24 17:36 ` Steve Dickson
0 siblings, 1 reply; 9+ messages in thread
From: Chuck Lever @ 2009-03-24 17:08 UTC (permalink / raw)
To: Steve Dickson; +Cc: Linux NFS Mailing list
On Mar 24, 2009, at 12:56 PM, Steve Dickson wrote:
> Chuck Lever wrote:
>> I've actually already addressed all the cases you found under
>> utils/statd/... my re-writes replace both nsm_log() and note() with
>> calls to xlog(), and add return code checking to the write(2) calls.
> Sorry about that... but I already did the commit... since I wanted to
> get some testing asap.. so go head and send me the parts I broke
> and I will do the forward port...
This is all only in my tree, and I haven't finished it yet, so I will
have to do the fix-ups myself.
>> Also, note that you can use the "%m" format specifier to generate the
>> same string you get from strerror(errno).
> Yeah.. I knew that... but I thought there some memory corruption
> or service denial issue with using "%m" so I've always stuck
> with '%d (%s)'.
I use %m routinely. What exactly are these issues?
--
Chuck Lever
chuck[dot]lever[at]oracle[dot]com
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] nfs-utils: Removed a number of warn_unused_result warnings
2009-03-24 17:08 ` Chuck Lever
@ 2009-03-24 17:36 ` Steve Dickson
[not found] ` <49C91A2F.90501-AfCzQyP5zfLQT0dZR+AlfA@public.gmane.org>
0 siblings, 1 reply; 9+ messages in thread
From: Steve Dickson @ 2009-03-24 17:36 UTC (permalink / raw)
To: Chuck Lever; +Cc: Linux NFS Mailing list
Chuck Lever wrote:
> On Mar 24, 2009, at 12:56 PM, Steve Dickson wrote:
>> Chuck Lever wrote:
>>> I've actually already addressed all the cases you found under
>>> utils/statd/... my re-writes replace both nsm_log() and note() with
>>> calls to xlog(), and add return code checking to the write(2) calls.
>> Sorry about that... but I already did the commit... since I wanted to
>> get some testing asap.. so go head and send me the parts I broke
>> and I will do the forward port...
>
> This is all only in my tree, and I haven't finished it yet, so I will
> have to do the fix-ups myself.
Again, sorry about that..
>
>>> Also, note that you can use the "%m" format specifier to generate the
>>> same string you get from strerror(errno).
>> Yeah.. I knew that... but I thought there some memory corruption
>> or service denial issue with using "%m" so I've always stuck
>> with '%d (%s)'.
>
> I use %m routinely. What exactly are these issues?
It was a while ago... but I seem to remember there as an issue
with one of the daemons using '%m'.. I want to say a buffer overflow
but I just don't remember... It was probably some funky way '%m'
was being used...since I sure the normal every day use of '%m"
is fine...
steved.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] nfs-utils: Removed a number of warn_unused_result warnings
[not found] ` <49C91A2F.90501-AfCzQyP5zfLQT0dZR+AlfA@public.gmane.org>
@ 2009-03-24 17:44 ` Chuck Lever
2009-03-24 17:51 ` Steve Dickson
0 siblings, 1 reply; 9+ messages in thread
From: Chuck Lever @ 2009-03-24 17:44 UTC (permalink / raw)
To: Steve Dickson; +Cc: Linux NFS Mailing list
On Mar 24, 2009, at 1:36 PM, Steve Dickson wrote:
> Chuck Lever wrote:
>> On Mar 24, 2009, at 12:56 PM, Steve Dickson wrote:
>>> Chuck Lever wrote:
>>>> I've actually already addressed all the cases you found under
>>>> utils/statd/... my re-writes replace both nsm_log() and note() with
>>>> calls to xlog(), and add return code checking to the write(2)
>>>> calls.
>>> Sorry about that... but I already did the commit... since I wanted
>>> to
>>> get some testing asap.. so go head and send me the parts I broke
>>> and I will do the forward port...
>>
>> This is all only in my tree, and I haven't finished it yet, so I will
>> have to do the fix-ups myself.
> Again, sorry about that..
>
>>
>>>> Also, note that you can use the "%m" format specifier to generate
>>>> the
>>>> same string you get from strerror(errno).
>>> Yeah.. I knew that... but I thought there some memory corruption
>>> or service denial issue with using "%m" so I've always stuck
>>> with '%d (%s)'.
>>
>> I use %m routinely. What exactly are these issues?
> It was a while ago... but I seem to remember there as an issue
> with one of the daemons using '%m'.. I want to say a buffer overflow
> but I just don't remember... It was probably some funky way '%m'
> was being used...since I sure the normal every day use of '%m"
> is fine...
I'm not a security expert, but I can't see how that could be a problem
for generating log messages (especially any message that precedes a
daemon's exit). I'd like to continue using "%m" with xlog() in my own
patches for the time being. Is that OK with you?
--
Chuck Lever
chuck[dot]lever[at]oracle[dot]com
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] nfs-utils: Removed a number of warn_unused_result warnings
2009-03-24 17:44 ` Chuck Lever
@ 2009-03-24 17:51 ` Steve Dickson
[not found] ` <49C91DB7.1050006-AfCzQyP5zfLQT0dZR+AlfA@public.gmane.org>
0 siblings, 1 reply; 9+ messages in thread
From: Steve Dickson @ 2009-03-24 17:51 UTC (permalink / raw)
To: Chuck Lever; +Cc: Linux NFS Mailing list
Chuck Lever wrote:
>>>>> Also, note that you can use the "%m" format specifier to generate the
>>>>> same string you get from strerror(errno).
>>>> Yeah.. I knew that... but I thought there some memory corruption
>>>> or service denial issue with using "%m" so I've always stuck
>>>> with '%d (%s)'.
>>>
>>> I use %m routinely. What exactly are these issues?
>> It was a while ago... but I seem to remember there as an issue
>> with one of the daemons using '%m'.. I want to say a buffer overflow
>> but I just don't remember... It was probably some funky way '%m'
>> was being used...since I sure the normal every day use of '%m"
>> is fine...
>
> I'm not a security expert, but I can't see how that could be a problem
> for generating log messages (especially any message that precedes a
> daemon's exit). I'd like to continue using "%m" with xlog() in my own
> patches for the time being. Is that OK with you?
Sure.. I have no problem with that...
steved.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] nfs-utils: Removed a number of warn_unused_result warnings
[not found] ` <49C91DB7.1050006-AfCzQyP5zfLQT0dZR+AlfA@public.gmane.org>
@ 2009-03-24 19:35 ` Chuck Lever
2009-03-25 14:39 ` Steve Dickson
0 siblings, 1 reply; 9+ messages in thread
From: Chuck Lever @ 2009-03-24 19:35 UTC (permalink / raw)
To: Steve Dickson; +Cc: Linux NFS Mailing list
On Mar 24, 2009, at 1:51 PM, Steve Dickson wrote:
> Chuck Lever wrote:
>>>>>> Also, note that you can use the "%m" format specifier to
>>>>>> generate the
>>>>>> same string you get from strerror(errno).
>>>>> Yeah.. I knew that... but I thought there some memory corruption
>>>>> or service denial issue with using "%m" so I've always stuck
>>>>> with '%d (%s)'.
>>>>
>>>> I use %m routinely. What exactly are these issues?
>>> It was a while ago... but I seem to remember there as an issue
>>> with one of the daemons using '%m'.. I want to say a buffer overflow
>>> but I just don't remember... It was probably some funky way '%m'
>>> was being used...since I sure the normal every day use of '%m"
>>> is fine...
>>
>> I'm not a security expert, but I can't see how that could be a
>> problem
>> for generating log messages (especially any message that precedes a
>> daemon's exit). I'd like to continue using "%m" with xlog() in my
>> own
>> patches for the time being. Is that OK with you?
> Sure.. I have no problem with that...
Hey Steve, it looks like you're dropping short descriptions again when
committing patches. The last two patches in the nfs-utils repo don't
have short descriptions. Jeff's patch description doesn't make too
much sense without the short description.
--
Chuck Lever
chuck[dot]lever[at]oracle[dot]com
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] nfs-utils: Removed a number of warn_unused_result warnings
2009-03-24 19:35 ` Chuck Lever
@ 2009-03-25 14:39 ` Steve Dickson
0 siblings, 0 replies; 9+ messages in thread
From: Steve Dickson @ 2009-03-25 14:39 UTC (permalink / raw)
To: Chuck Lever; +Cc: Linux NFS Mailing list
Chuck Lever wrote:
> On Mar 24, 2009, at 1:51 PM, Steve Dickson wrote:
>> Chuck Lever wrote:
>>>>>>> Also, note that you can use the "%m" format specifier to generate
>>>>>>> the
>>>>>>> same string you get from strerror(errno).
>>>>>> Yeah.. I knew that... but I thought there some memory corruption
>>>>>> or service denial issue with using "%m" so I've always stuck
>>>>>> with '%d (%s)'.
>>>>>
>>>>> I use %m routinely. What exactly are these issues?
>>>> It was a while ago... but I seem to remember there as an issue
>>>> with one of the daemons using '%m'.. I want to say a buffer overflow
>>>> but I just don't remember... It was probably some funky way '%m'
>>>> was being used...since I sure the normal every day use of '%m"
>>>> is fine...
>>>
>>> I'm not a security expert, but I can't see how that could be a problem
>>> for generating log messages (especially any message that precedes a
>>> daemon's exit). I'd like to continue using "%m" with xlog() in my own
>>> patches for the time being. Is that OK with you?
>> Sure.. I have no problem with that...
>
> Hey Steve, it looks like you're dropping short descriptions again when
> committing patches. The last two patches in the nfs-utils repo don't
> have short descriptions. Jeff's patch description doesn't make too much
> sense without the short description.
Yeah I noticed that after I did the commit... I didn't think it was worth
going back and redoing the commit just to added that line.... The code
in Jeff's patches are pretty straightforward so I'm thinking it will
not take to much to understand what he was doing...
steved.
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2009-03-25 14:42 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-03-23 14:08 [PATCH] nfs-utils: Removed a number of warn_unused_result warnings Steve Dickson
[not found] ` <49C797C6.8030102-AfCzQyP5zfLQT0dZR+AlfA@public.gmane.org>
2009-03-24 16:19 ` Chuck Lever
2009-03-24 16:56 ` Steve Dickson
[not found] ` <49C910C3.2090700-AfCzQyP5zfLQT0dZR+AlfA@public.gmane.org>
2009-03-24 17:08 ` Chuck Lever
2009-03-24 17:36 ` Steve Dickson
[not found] ` <49C91A2F.90501-AfCzQyP5zfLQT0dZR+AlfA@public.gmane.org>
2009-03-24 17:44 ` Chuck Lever
2009-03-24 17:51 ` Steve Dickson
[not found] ` <49C91DB7.1050006-AfCzQyP5zfLQT0dZR+AlfA@public.gmane.org>
2009-03-24 19:35 ` Chuck Lever
2009-03-25 14:39 ` Steve Dickson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox