OSDN Git Service

libext2fs: only link an inode into a directory once
authorDarrick J. Wong <darrick.wong@oracle.com>
Tue, 1 Oct 2013 01:26:55 +0000 (18:26 -0700)
committerTheodore Ts'o <tytso@mit.edu>
Mon, 7 Oct 2013 13:13:59 +0000 (09:13 -0400)
The ext2fs_link helper function link_proc does not check the value of
ls->done, which means that if the function finds multiple empty spaces
that will fit the new directory entry, it will create a directory
entry in each of the spaces.  Instead of doing that, check the done
value and don't do anything more if we've already added the directory
entry.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
lib/ext2fs/link.c

index 2d03b57..2f4f54a 100644 (file)
@@ -42,6 +42,9 @@ static int link_proc(struct ext2_dir_entry *dirent,
        unsigned int rec_len, min_rec_len, curr_rec_len;
        int ret = 0;
 
+       if (ls->done)
+               return 0;
+
        rec_len = EXT2_DIR_REC_LEN(ls->namelen);
 
        ls->err = ext2fs_get_rec_len(ls->fs, dirent, &curr_rec_len);