From Jeff Layton: The cifs code regularly has to convert strings from ucs2_le (a double byte encoding scheme used on windows) to the local NLS charset. The routines that do this have a very poor scheme for handling buffer lengths. The string conversion routines accept only a single length parameter specified in units of the number of wide characters that it should try to convert. It's assumed therefore that the destination buffer will be big enough. Some measures are in place now to try to ensure this, but they really aren't sufficient. What's needed is a new set of conversion routines that take both the source and destination buffer lengths into account. The patchset adds these routines and converts the appropriate callers to use them. In addition, it removes a very large piece of "experimental" NTLMSSP code that I found to be completely unreachable. That code was using the old routines and it's simpler (and better) to just remove that code rather than convert it. The upstream commits are: http://git.kernel.org/linus/27b87fe52baba0a55e9723030e76fce94fabcea4 http://git.kernel.org/linus/afe48c31ea5c74eaac58621ce1c85ae8187c4383 http://git.kernel.org/linus/18295796a30cada84e933d805072dc2248d54f98 http://git.kernel.org/linus/9e39b0ae8af46c83b85dae7ff5251911a80fce5a http://git.kernel.org/linus/d185cda7712fd1d9e349174639d76eadc66679be http://git.kernel.org/linus/2edd6c5b0517b9131ede9e74cb121898ccd73042 http://git.kernel.org/linus/20418acd6874792359b42c12d159f42f17593f34 http://git.kernel.org/linus/f58841666bc22e827ca0dcef7b71c7bc2758ce82 http://git.kernel.org/linus/460b96960d1946914e50316ffeefe7b41dddce91 http://git.kernel.org/linus/59140797c5817363087b0ffb46e6bb81a11fe0dc http://git.kernel.org/linus/cc20c031bb067eb3280a1c4b5c42295093e24863 http://git.kernel.org/linus/066ce6899484d9026acd6ba3a8dbbedb33d7ae1b http://git.kernel.org/linus/69f801fcaa03be83d58c564f00913b7c172808e4 http://git.kernel.org/linus/7fabf0c9479fef9fdb9528a5fbdb1cb744a744a4 http://git.kernel.org/linus/66345f50f070ae7412a28543ee197cb5eff73598 http://git.kernel.org/linus/d37dc42ab6f040b8f0f2962ab219c5b2accf748d http://git.kernel.org/linus/7b0c8fcff47a885743125dd843db64af41af5a61 http://git.kernel.org/linus/968460ebd8006d55661dec0fb86712b40d71c413 http://git.kernel.org/linus/341060273232a2df0d1a7fa53abc661fcf22747c Update (May 15, 2009): And this commit too: cifs: fix error handling in parse_DFS_referrals http://git.kernel.org/linus/d8e2f53ac99f4ce7d63807a84f98d1b80df598cf (this patch is in Steve's tree but not yet in Linus'. It should make its way there soon though.)
http://marc.info/?l=oss-security&m=124226897529946&w=2
It looks like this bug is fixed in the upstream 2.6.27.24 and 2.6.29.4 updates.
kernel-2.6.27.24-78.2.53.fc9 has been submitted as an update for Fedora 9. http://admin.fedoraproject.org/updates/kernel-2.6.27.24-78.2.53.fc9
kernel-2.6.27.24-170.2.68.fc10 has been submitted as an update for Fedora 10. http://admin.fedoraproject.org/updates/kernel-2.6.27.24-170.2.68.fc10
kernel-2.6.27.24-170.2.68.fc10 has been pushed to the Fedora 10 stable repository. If problems still persist, please make note of it in this bug report.
kernel-2.6.27.24-78.2.53.fc9 has been pushed to the Fedora 9 stable repository. If problems still persist, please make note of it in this bug report.
This issue has been addressed in following products: Red Hat Enterprise Linux 5 Via RHSA-2009:1106 https://rhn.redhat.com/errata/RHSA-2009-1106.html
This issue has been addressed in following products: MRG for RHEL-5 Via RHSA-2009:1157 https://rhn.redhat.com/errata/RHSA-2009-1157.html
This issue has been addressed in following products: Red Hat Enterprise Linux 4 Via RHSA-2009:1211 https://rhn.redhat.com/errata/RHSA-2009-1211.html