Skip to content

Commit 56d9276

Browse files
hclee1Naim
authored andcommitted
ntfs: validate WSL EA payload sizes
Enforce the exact-size reads for $LXUID, $LXGID, $LXMOD, $LXDEV. Signed-off-by: Hyunchul Lee <hyc.lee@gmail.com> Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
1 parent 2ec08ea commit 56d9276

1 file changed

Lines changed: 6 additions & 2 deletions

File tree

fs/ntfs/ea.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -365,6 +365,8 @@ int ntfs_ea_get_wsl_inode(struct inode *inode, dev_t *rdevp, unsigned int flags)
365365
sizeof(v));
366366
if (err < 0)
367367
return err;
368+
if (err != sizeof(v))
369+
return -EIO;
368370
i_uid_write(inode, le32_to_cpu(v));
369371
}
370372

@@ -374,12 +376,14 @@ int ntfs_ea_get_wsl_inode(struct inode *inode, dev_t *rdevp, unsigned int flags)
374376
sizeof(v));
375377
if (err < 0)
376378
return err;
379+
if (err != sizeof(v))
380+
return -EIO;
377381
i_gid_write(inode, le32_to_cpu(v));
378382
}
379383

380384
/* Load mode to lxmod EA */
381385
err = ntfs_get_ea(inode, "$LXMOD", sizeof("$LXMOD") - 1, &v, sizeof(v));
382-
if (err > 0) {
386+
if (err == sizeof(v)) {
383387
inode->i_mode = le32_to_cpu(v);
384388
} else {
385389
/* Everyone gets all permissions. */
@@ -388,7 +392,7 @@ int ntfs_ea_get_wsl_inode(struct inode *inode, dev_t *rdevp, unsigned int flags)
388392

389393
/* Load mode to lxdev EA */
390394
err = ntfs_get_ea(inode, "$LXDEV", sizeof("$LXDEV") - 1, &v, sizeof(v));
391-
if (err > 0)
395+
if (err == sizeof(v))
392396
*rdevp = le32_to_cpu(v);
393397
err = 0;
394398

0 commit comments

Comments
 (0)