cifs: smb2ops: Fix NULL check in smb2_query_symlink
Subsystems (2)
PATCH 1/1 cifs: smb2ops: Fix NULL check in smb2_query_symlink
The current code null checks variable err_buf, which is always null when it is checked, hence utf16_path is free'd and the function returns -ENOENT everytime it is called, making it impossible for the execution path to reach the following code:
err_buf = err_iov.iov_base;
Fix this by null checking err_iov.iov_base instead of err_buf. Also, notice that err_buf no longer needs to be initialized to NULL.
Addresses-Coverity-ID: 1467876 ("Logically dead code")
--- fs/cifs/smb2ops.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
fs/cifs/smb2ops.c +2 -2
@@ -1452,7 +1452,7 @@ smb2_query_symlink(const unsigned int xid, struct cifs_tcon *tcon,struct cifs_open_parms oparms;struct cifs_fid fid;struct kvec err_iov = {NULL ,0 }; -struct smb2_err_rsp *err_buf =NULL ; +struct smb2_err_rsp *err_buf;struct smb2_symlink_err_rsp *symlink;unsigned int sub_len;unsigned int sub_offset;
@@ -1476,7 +1476,7 @@ smb2_query_symlink(const unsigned int xid, struct cifs_tcon *tcon, rc =SMB2_open (xid, &oparms, utf16_path, &oplock,NULL , &err_iov); -if (!rc || !err_buf) { +if (!rc || !err_iov.iov_base) {kfree (utf16_path);return -ENOENT ; }
Signature · 1 line
2.7.4
2018-04-13 8:13 GMT-07:00 Gustavo A. R. Silva <[email protected]>:
Quoted 42 lines
The current code null checks variable
err_buf, which is always null when it is checked, henceutf16_pathis free'd and the function returns-ENOENTeverytime it is called, making it impossible for the execution path to reach the following code:
err_buf= err_iov.iov_base;Fix this by null checking err_iov.iov_base instead of
err_buf. Also, notice thaterr_bufno longer needs to be initialized to NULL.Addresses-Coverity-ID: 1467876 ("Logically dead code")
Fixes 2d636199e400 ("cifs: Change SMB2_open to return an iov for the error parameter")Signed-off-by Gustavo A. R. Silva <[email protected]>--- fs/cifs/smb2ops.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)fs/cifs/smb2ops.c +2
-3@@ -1452,7 +1452,7 @@ smb2_query_symlink(const unsigned int xid, struct cifs_tcon *tcon,struct cifs_open_parms oparms;struct cifs_fid fid;struct kvec err_iov = {NULL ,0 }; -struct smb2_err_rsp *err_buf =NULL ; +struct smb2_err_rsp *err_buf;struct smb2_symlink_err_rsp *symlink;unsigned int sub_len;unsigned int sub_offset;@@ -1476,7 +1476,7 @@ smb2_query_symlink(const unsigned int xid, struct cifs_tcon *tcon, rc =SMB2_open (xid, &oparms, utf16_path, &oplock,NULL , &err_iov); -if (!rc || !err_buf) { +if (!rc || !err_iov.iov_base) {kfree (utf16_path);return -ENOENT ; } --2.7.4
Quoted 4 lines
--
To unsubscribe from this list: send the line "unsubscribe linux-cifs" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Thanks!
--
Best regards,
Pavel Shilovsky