]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
xfs_quota: check report_mount return value
authorEric Sandeen <sandeen@sandeen.net>
Mon, 30 May 2016 02:21:31 +0000 (12:21 +1000)
committerDave Chinner <david@fromorbit.com>
Mon, 30 May 2016 02:21:31 +0000 (12:21 +1000)
The new call to report_mount doesn't check the return value
like every other caller does...

Returning 1 means it printed something; if the terse flag
is used and there is no usage, nothing gets printed.
If we set the NO_HEADER_FLAG anyway, then we won't see
the header for subsequent entries as we expect.

For example, project ID 0 has no usage in this case:

# xfs_quota -x -c "report -a" /mnt/test
Project quota on /mnt/test (/dev/sdb1)
                               Blocks
Project ID       Used       Soft       Hard    Warn/Grace
---------- --------------------------------------------------
#0                  0          0          0     00 [--------]
project          2048          4          4     00 [--none--]

So using the terse flag results in no header when it prints
projects with usage:

# xfs_quota -x -c "report -t -a" /mnt/test
project          2048          4          4     00 [--none--]

With this fix it prints the header as expected:

# xfs_quota -x -c "report -t -a" /mnt/test
Project quota on /mnt/test (/dev/sdb1)
                               Blocks
Project ID       Used       Soft       Hard    Warn/Grace
---------- --------------------------------------------------
project          2048          4          4     00 [--none--]

Addresses-Coverity-Id: 1361552
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Zorro Lang <zlang@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Dave Chinner <david@fromorbit.com>
quota/report.c

index cc422d19107665f76ce0d827de3df9652e6ab743..59290e19867a610dac6d79d856fbf211beca0ded 100644 (file)
@@ -580,9 +580,9 @@ report_project_mount(
                         * Print default project quota, even if projid 0
                         * isn't defined
                         */
-                       report_mount(fp, 0, NULL, NULL, form, XFS_PROJ_QUOTA,
-                                    mount, flags);
-                       flags |= NO_HEADER_FLAG;
+                       if (report_mount(fp, 0, NULL, NULL,
+                                       form, XFS_PROJ_QUOTA, mount, flags))
+                               flags |= NO_HEADER_FLAG;
                }
 
                setprent();