summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2012-05-04 00:19:28 +0200
committerBen Hutchings <ben@decadent.org.uk>2012-05-11 13:14:50 +0100
commit5feaf04c7b68d401b17255958432f0d89dd9d7ad (patch)
treebeb0950eaaed939cde885d6f8e51f2a318aad690
parent103f468a50f7bd31eb6f47f2f3dc4a4009d9f470 (diff)
downloadlinux-stable-5feaf04c7b68d401b17255958432f0d89dd9d7ad.tar.gz
linux-stable-5feaf04c7b68d401b17255958432f0d89dd9d7ad.tar.bz2
linux-stable-5feaf04c7b68d401b17255958432f0d89dd9d7ad.zip
fs/cifs: fix parsing of dfs referrals
commit d8f2799b105a24bb0bbd3380a0d56e6348484058 upstream. The problem was that the first referral was parsed more than once and so the caller tried the same referrals multiple times. The problem was introduced partly by commit 066ce6899484d9026acd6ba3a8dbbedb33d7ae1b, where 'ref += le16_to_cpu(ref->Size);' got lost, but that was also wrong... Signed-off-by: Stefan Metzmacher <metze@samba.org> Tested-by: Björn Jacke <bj@sernet.de> Reviewed-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Steve French <sfrench@us.ibm.com> [bwh: Backport to 3.2: adjust context] Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
-rw-r--r--fs/cifs/cifssmb.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/fs/cifs/cifssmb.c b/fs/cifs/cifssmb.c
index 0e6adac01f11..e89803bfc511 100644
--- a/fs/cifs/cifssmb.c
+++ b/fs/cifs/cifssmb.c
@@ -4826,8 +4826,12 @@ parse_DFS_referrals(TRANSACTION2_GET_DFS_REFER_RSP *pSMBr,
max_len = data_end - temp;
node->node_name = cifs_strndup_from_ucs(temp, max_len,
is_unicode, nls_codepage);
- if (!node->node_name)
+ if (!node->node_name) {
rc = -ENOMEM;
+ goto parse_DFS_referrals_exit;
+ }
+
+ ref++;
}
parse_DFS_referrals_exit: