]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
xfsprogs: metadump: ensure dup table always has entry for obfuscated name
authorAlex Elder <aelder@sgi.com>
Fri, 18 Feb 2011 21:21:01 +0000 (21:21 +0000)
committerAlex Elder <aelder@sgi.com>
Tue, 8 Mar 2011 18:04:26 +0000 (12:04 -0600)
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@sgi.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
db/metadump.c

index 9b72d6ce2ec44fb7f05bbb31e6bca9f2bc10ad05..143fcba13c95e0afa9940de956796ed667961cad 100644 (file)
@@ -550,18 +550,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