aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Sandeen <sandeen@redhat.com>2015-06-23 11:38:18 +1000
committerDave Chinner <david@fromorbit.com>2015-06-23 11:38:18 +1000
commitd21bcdafc2f4b93e22dcc083c6ae2add62a72bfe (patch)
tree124fd29fb5ff19f835aff1added213f46b33ae2a
parenta5d34ab7e9905961f27daf161bb135df217ddf4a (diff)
downloadxfsprogs-dev-progs-misc-fixes-1.tar.gz
xfs_metadump: obfuscate remote symlinks on CRC filesystemsprogs-misc-fixes-1
On CRC filesystems, the symlink block starts with a header, which contains magic, "XLSM" The code happens to "work" today w/o corrupting anything, because it seems "XSLM" as a string, decides it's too short to obfuscate, and leaves it alone. But the real symlink target is untouched. Fix that by moving the pointer to the string we want to obfuscate by the size of the header, and shorten the length to obfuscate accordingly. Signed-off-by: Eric Sandeen <sandeen@redhat.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Dave Chinner <david@fromorbit.com>
-rw-r--r--db/metadump.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/db/metadump.c b/db/metadump.c
index bdc48a0a67..f9f43006c4 100644
--- a/db/metadump.c
+++ b/db/metadump.c
@@ -1240,8 +1240,12 @@ static void
obfuscate_symlink_block(
char *block)
{
- /* XXX: need to handle CRC headers */
- obfuscate_path_components(block, mp->m_sb.sb_blocksize);
+ if (xfs_sb_version_hascrc(&(mp)->m_sb))
+ block += sizeof(struct xfs_dsymlink_hdr);
+
+ obfuscate_path_components(block,
+ XFS_SYMLINK_BUF_SPACE(mp,
+ mp->m_sb.sb_blocksize));
}
#define MAX_REMOTE_VALS 4095