]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
xfs_db: write command broken on 64 bit values
authorDave Chinner <dchinner@redhat.com>
Tue, 8 Jul 2014 00:31:36 +0000 (10:31 +1000)
committerDave Chinner <david@fromorbit.com>
Tue, 8 Jul 2014 00:31:36 +0000 (10:31 +1000)
convert_args() has problesm with 64 bit fields because it tries to
shift them by 64 bits. The result of doing so is undefined by the C
standard, and so results in the unexpected behaviour of the result
being being the original value unchanged rather than 0. Hence you
can't write 64 bit fields because the code thinks that all values
other than 0 are out of range.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Dave Chinner <david@fromorbit.com>
db/write.c

index ca8bd0fd1543fe7d516dba9c0e4b0601b9ef0c50..0157a44ff34c75c0c2a066f126909f69cf36365a 100644 (file)
@@ -565,7 +565,7 @@ convert_arg(
                return NULL;
 
        /* Does the value fit into the range of the destination bitfield? */
-       if ((val >> bit_length) > 0)
+       if (bit_length < 64 && (val >> bit_length) > 0)
                return NULL;
        /*
         * If the length of the field is not a multiple of a byte, push