[PATCH 2/3] smb: client: check posix_info_parse() in cifs_posix_to_fattr()
Ren Wei <[email protected]>
| Newsgroups | org.kernel.vger.linux-cifs |
|---|---|
| Message-ID | <60461bf5482d51ebd950fc84fd19ece9ac1917fb.1782898568.git.xizh2024@lzu.edu.cn> |
From: Zihan Xi <[email protected]> posix_info_parse() returns an error without filling the output structure. Check the return value before calling sid_to_id() to avoid using uninitialized owner/group SID data. Fixes: 9934430e2178 ("SMB3.1.1: Fix ids returned in POSIX query dir") Cc: [email protected] Signed-off-by: Zihan Xi <[email protected]> Signed-off-by: Ren Wei <[email protected]> --- fs/smb/client/readdir.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/fs/smb/client/readdir.c b/fs/smb/client/readdir.c index 1ff77f3d1de0..df46aa919c27 100644 --- a/fs/smb/client/readdir.c +++ b/fs/smb/client/readdir.c @@ -244,9 +244,11 @@ cifs_posix_to_fattr(struct cifs_fattr *fattr, struct smb2_posix_info *info, { struct smb2_posix_info_parsed parsed; - posix_info_parse(info, NULL, &parsed); - memset(fattr, 0, sizeof(*fattr)); + if (posix_info_parse(info, NULL, &parsed) < 0) { + cifs_dbg(VFS, "Invalid POSIX info payload\n"); + return; + } fattr->cf_uniqueid = le64_to_cpu(info->Inode); fattr->cf_bytes = le64_to_cpu(info->AllocationSize); fattr->cf_eof = le64_to_cpu(info->EndOfFile); -- 2.43.0