summaryrefslogtreecommitdiff
path: root/fs/cifs/connect.c
diff options
context:
space:
mode:
authorJeff Layton <jlayton@redhat.com>2010-09-03 16:00:50 (GMT)
committerSteve French <sfrench@us.ibm.com>2010-09-08 21:22:35 (GMT)
commit32670396e7fc6e4f37451a69339968985461a374 (patch)
treedf01cb3461125f341d61bde1d527f575372803ef /fs/cifs/connect.c
parent7332f2a6217ee6925f83ef0e725013067ed316ba (diff)
downloadlinux-32670396e7fc6e4f37451a69339968985461a374.tar.xz
cifs: prevent possible memory corruption in cifs_demultiplex_thread
cifs_demultiplex_thread sets the addr.sockAddr.sin_port without any regard for the socket family. While it may be that the error in question here never occurs on an IPv6 socket, it's probably best to be safe and set the port properly if it ever does. Break the port setting code out of cifs_fill_sockaddr and into a new function, and call that from cifs_demultiplex_thread. Signed-off-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Steve French <sfrench@us.ibm.com>
Diffstat (limited to 'fs/cifs/connect.c')
-rw-r--r--fs/cifs/connect.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
index 5fde83f..67dad54 100644
--- a/fs/cifs/connect.c
+++ b/fs/cifs/connect.c
@@ -463,7 +463,8 @@ incomplete_rcv:
* is since we do not begin with RFC1001 session
* initialize frame)
*/
- server->addr.sockAddr.sin_port = htons(CIFS_PORT);
+ cifs_set_port((struct sockaddr *)
+ &server->addr.sockAddr, CIFS_PORT);
cifs_reconnect(server);
csocket = server->ssocket;
wake_up(&server->response_q);