xfs
[Top] [All Lists]

[PATCH 1/2] metadump: Fill attribute values with 'v' rather than NUL

To: xfs-oss <xfs@xxxxxxxxxxx>
Subject: [PATCH 1/2] metadump: Fill attribute values with 'v' rather than NUL
From: Eric Sandeen <sandeen@xxxxxxxxxxx>
Date: Mon, 06 Jul 2015 13:16:34 -0500
Delivered-to: xfs@xxxxxxxxxxx
In-reply-to: <559AC5AA.5040900@xxxxxxxxxxx>
References: <559AC5AA.5040900@xxxxxxxxxxx>
Rather than memset attribute values to '\0', use the character 'v' -
otherwise in some cases we get attributes with a non-zero value
length which start with a NUL, and that makes some userspace tools
unhappy, yielding results like this:

security.oO^Lio.=0sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=

Signed-off-by: Eric Sandeen <sandeen@xxxxxxxxxx>
---

diff --git a/db/metadump.c b/db/metadump.c
index 2286b71..a30f90e 100644
--- a/db/metadump.c
+++ b/db/metadump.c
@@ -1083,8 +1083,8 @@ obfuscate_sf_attr(
        xfs_dinode_t            *dip)
 {
        /*
-        * with extended attributes, obfuscate the names and zero the actual
-        * values.
+        * with extended attributes, obfuscate the names and fill the actual
+        * values with 'v' (to see a valid string length, as opposed to NULLs)
         */
 
        xfs_attr_shortform_t    *asfp;
@@ -1124,7 +1124,7 @@ obfuscate_sf_attr(
                }
 
                generate_obfuscated_name(0, asfep->namelen, &asfep->nameval[0]);
-               memset(&asfep->nameval[asfep->namelen], 0, asfep->valuelen);
+               memset(&asfep->nameval[asfep->namelen], 'v', asfep->valuelen);
 
                asfep = (xfs_attr_sf_entry_t *)((char *)asfep +
                                XFS_ATTR_SF_ENTSIZE(asfep));
@@ -1302,7 +1302,7 @@ obfuscate_attr_block(
                                /* magic to handle attr and attr3 */
                                memset(block +
                                        (bs - XFS_ATTR3_RMT_BUF_SPACE(mp, bs)),
-                                     0, XFS_ATTR3_RMT_BUF_SPACE(mp, bs));
+                                     'v', XFS_ATTR3_RMT_BUF_SPACE(mp, bs));
                }
                return;
        }
@@ -1339,7 +1339,7 @@ obfuscate_attr_block(
                        }
                        generate_obfuscated_name(0, local->namelen,
                                &local->nameval[0]);
-                       memset(&local->nameval[local->namelen], 0,
+                       memset(&local->nameval[local->namelen], 'v',
                                be16_to_cpu(local->valuelen));
                } else {
                        remote = xfs_attr3_leaf_name_remote(leaf, i);


<Prev in Thread] Current Thread [Next in Thread>