Skip to content

Commit d1c6deb

Browse files
committed
smb: client: fix possible double free in smb2_set_ea()
JIRA: https://issues.redhat.com/browse/RHEL-66493 CVE: CVE-2024-50152 commit 19ebc1e Author: Su Hui <[email protected]> Date: Tue Oct 15 18:20:37 2024 +0800 smb: client: fix possible double free in smb2_set_ea() Clang static checker(scan-build) warning: fs/smb/client/smb2ops.c:1304:2: Attempt to free released memory. 1304 | kfree(ea); | ^~~~~~~~~ There is a double free in such case: 'ea is initialized to NULL' -> 'first successful memory allocation for ea' -> 'something failed, goto sea_exit' -> 'first memory release for ea' -> 'goto replay_again' -> 'second goto sea_exit before allocate memory for ea' -> 'second memory release for ea resulted in double free'. Re-initialie 'ea' to NULL near to the replay_again label, it can fix this double free problem. Fixes: 4f1fffa ("cifs: commands that are retried should have replay flag set") Reviewed-by: Dan Carpenter <[email protected]> Signed-off-by: Su Hui <[email protected]> Signed-off-by: Steve French <[email protected]> Signed-off-by: Paulo Alcantara <[email protected]>
1 parent a4511ae commit d1c6deb

File tree

1 file changed

+2
-1
lines changed

1 file changed

+2
-1
lines changed

fs/smb/client/smb2ops.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1122,7 +1122,7 @@ smb2_set_ea(const unsigned int xid, struct cifs_tcon *tcon,
11221122
struct cifs_fid fid;
11231123
unsigned int size[1];
11241124
void *data[1];
1125-
struct smb2_file_full_ea_info *ea = NULL;
1125+
struct smb2_file_full_ea_info *ea;
11261126
struct smb2_query_info_rsp *rsp;
11271127
int rc, used_len = 0;
11281128
int retries = 0, cur_sleep = 1;
@@ -1143,6 +1143,7 @@ smb2_set_ea(const unsigned int xid, struct cifs_tcon *tcon,
11431143
if (!utf16_path)
11441144
return -ENOMEM;
11451145

1146+
ea = NULL;
11461147
resp_buftype[0] = resp_buftype[1] = resp_buftype[2] = CIFS_NO_BUFFER;
11471148
vars = kzalloc(sizeof(*vars), GFP_KERNEL);
11481149
if (!vars) {

0 commit comments

Comments
 (0)