Browse Source

squashfs: fix name reading in squashfs_xattr_get

Only read potentially matching names into the target buffer, all
obviously non matching names don't need to be read into the
target buffer.

Signed-off-by: Phillip Lougher <phillip@lougher.demon.co.uk>
Phillip Lougher 15 years ago
parent
commit
5c80f5aa40
1 changed files with 6 additions and 2 deletions
  1. 6 2
      fs/squashfs/xattr.c

+ 6 - 2
fs/squashfs/xattr.c

@@ -145,8 +145,12 @@ static int squashfs_xattr_get(struct inode *inode, int name_index,
 		type = le16_to_cpu(entry.type);
 		prefix = type & SQUASHFS_XATTR_PREFIX_MASK;
 
-		err = squashfs_read_metadata(sb, target, &start, &offset,
-							name_size);
+		if (prefix == name_index && name_size == name_len)
+			err = squashfs_read_metadata(sb, target, &start,
+						&offset, name_size);
+		else
+			err = squashfs_read_metadata(sb, NULL, &start,
+						&offset, name_size);
 		if (err < 0)
 			goto failed;