xfs
[Top] [All Lists]

[PATCH v3, 08/16] xfsprogs: metadump: ensure dup table always has entry

To: xfs@xxxxxxxxxxx
Subject: [PATCH v3, 08/16] xfsprogs: metadump: ensure dup table always has entry for obfuscated name
From: Alex Elder <aelder@xxxxxxx>
Date: Fri, 18 Feb 2011 15:21:01 -0600
User-agent: Heirloom mailx 12.5 7/5/10
We need to ensure the nametable has a copy of all the names in a
directory (or attribute fork) in order to avoid creating duplicate
entries when obfuscating names.  Currently there is an (unlikely)
case where the name is passed back without such an entry being
created.  Reorder things so that won't happen.

Signed-off-by: Alex Elder <aelder@xxxxxxx>

No significant changes in this version from the last one posted.

---
 db/metadump.c |   12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

Index: b/db/metadump.c
===================================================================
--- a/db/metadump.c
+++ b/db/metadump.c
@@ -540,18 +540,22 @@ generate_obfuscated_name(
                }
        } while (dup);
 
-       memcpy(name, newname, namelen);
+       /* Create an entry for the name in the name table */
 
        p = malloc(sizeof(name_ent_t) + namelen);
        if (p == NULL)
                return;
 
-       p->next = nametable[hash % NAME_TABLE_SIZE];
-       p->hash = hash;
        p->namelen = namelen;
-       memcpy(p->name, name, namelen);
+       memcpy(p->name, newname, namelen);
+       p->hash = hash;
+       p->next = nametable[hash % NAME_TABLE_SIZE];
 
        nametable[hash % NAME_TABLE_SIZE] = p;
+
+       /* Update the caller's copy with the obfuscated name */
+
+       memcpy(name, newname, namelen);
 }
 
 static void

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