Fix gcc fortify source warnings
authorBrian Behlendorf <behlendorf1@llnl.gov>
Thu, 26 Aug 2010 16:52:40 +0000 (09:52 -0700)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Fri, 27 Aug 2010 22:34:02 +0000 (15:34 -0700)
Resolve issues uncovered by -D_FORTIFY_SOURCE=2, the default redhat
macro's file adds this option to the cflags.  This causes warnings
of the following type designed to keep the developer honest:

        warning: ignoring return value of 'foo', declared
                 with attribute warn_unused_result

The short term fix is to wrap these calls in VERIFY() to check the
return code.  The code was already assusing these would never fail.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
cmd/zdb/zdb.c
cmd/ztest/ztest.c
lib/libzpool/kernel.c

index 891cb9c..012d009 100644 (file)
@@ -1668,7 +1668,7 @@ dump_uberblock(uberblock_t *ub, const char *header, const char *footer)
 {
        time_t timestamp = ub->ub_timestamp;
 
-       (void) printf(header ? header : "");
+       (void) printf("%s", header ? header : "");
        (void) printf("\tmagic = %016llx\n", (u_longlong_t)ub->ub_magic);
        (void) printf("\tversion = %llu\n", (u_longlong_t)ub->ub_version);
        (void) printf("\ttxg = %llu\n", (u_longlong_t)ub->ub_txg);
@@ -1680,7 +1680,7 @@ dump_uberblock(uberblock_t *ub, const char *header, const char *footer)
                sprintf_blkptr(blkbuf, &ub->ub_rootbp);
                (void) printf("\trootbp = %s\n", blkbuf);
        }
-       (void) printf(footer ? footer : "");
+       (void) printf("%s", footer ? footer : "");
 }
 
 static void
@@ -2554,7 +2554,7 @@ zdb_dump_block_raw(void *buf, uint64_t size, int flags)
 {
        if (flags & ZDB_FLAG_BSWAP)
                byteswap_uint64_array(buf, size);
-       (void) write(1, buf, size);
+       VERIFY(write(fileno(stdout), buf, size) == size);
 }
 
 static void
index 771f142..5e21e62 100644 (file)
@@ -2592,7 +2592,7 @@ grow_vdev(vdev_t *vd, void *arg)
                return (vd);
 
        fsize = lseek(fd, 0, SEEK_END);
-       (void) ftruncate(fd, *newsize);
+       VERIFY(ftruncate(fd, *newsize) == 0);
 
        if (zopt_verbose >= 6) {
                (void) printf("%s grew from %lu to %lu bytes\n",
@@ -5459,7 +5459,8 @@ main(int argc, char **argv)
        process_options(argc, argv);
 
        /* Override location of zpool.cache */
-       (void) asprintf((char **)&spa_config_path, "%s/zpool.cache", zopt_dir);
+       VERIFY(asprintf((char **)&spa_config_path, "%s/zpool.cache",
+           zopt_dir) != -1);
 
        /*
         * Blow away any existing copy of zpool.cache
index f323bf6..ef26406 100644 (file)
@@ -796,7 +796,7 @@ umem_out_of_memory(void)
 {
        char errmsg[] = "out of memory -- generating core dump\n";
 
-       write(fileno(stderr), errmsg, sizeof (errmsg));
+       (void) fprintf(stderr, "%s", errmsg);
        abort();
        return (0);
 }