From df800ea6fb307abae785d3a5da60f4db70e9bc68 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Wed, 27 Aug 2014 13:15:29 -0700 Subject: Add test suite for iconv conversion fail of bad names over SMB1/SMB3. Bug 10775 - smbd crashes when accessing garbage filenames https://bugzilla.samba.org/show_bug.cgi?id=10775 Signed-off-by: Jeremy Allison Reviewed-by: David Disseldorp Autobuild-User(master): David Disseldorp Autobuild-Date(master): Tue Sep 16 04:21:49 CEST 2014 on sn-devel-104 --- selftest/target/Samba3.pm | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) (limited to 'selftest') diff --git a/selftest/target/Samba3.pm b/selftest/target/Samba3.pm index 554410580fa..de40ced8164 100755 --- a/selftest/target/Samba3.pm +++ b/selftest/target/Samba3.pm @@ -873,6 +873,9 @@ sub provision($$$$$$) my $msdfs_deeppath="$msdfs_shrdir/deeppath"; push(@dirs,$msdfs_deeppath); + my $badnames_shrdir="$shrdir/badnames"; + push(@dirs,$badnames_shrdir); + # this gets autocreated by winbindd my $wbsockdir="$prefix_abs/winbindd"; my $wbsockprivdir="$lockdir/winbindd_privileged"; @@ -925,6 +928,36 @@ sub provision($$$$$$) symlink "msdfs:$server_ip\\ro-tmp", "$msdfs_shrdir/msdfs-src1"; symlink "msdfs:$server_ipv6\\ro-tmp", "$msdfs_shrdir/deeppath/msdfs-src2"; + ## + ## create bad names in $badnames_shrdir + ## + ## (An invalid name, would be mangled to 8.3). + my $badname_target = "$badnames_shrdir/\340|\231\216\377\177"; + unless (open(BADNAME_TARGET, ">$badname_target")) { + warn("Unable to open $badname_target"); + return undef; + } + close(BADNAME_TARGET); + chmod 0666, $badname_target; + + ## (A bad name, would not be mangled to 8.3). + my $badname_target = "$badnames_shrdir/\240\276\346\327\377\177"; + unless (open(BADNAME_TARGET, ">$badname_target")) { + warn("Unable to open $badname_target"); + return undef; + } + close(BADNAME_TARGET); + chmod 0666, $badname_target; + + ## (A bad good name). + my $badname_target = "$badnames_shrdir/blank.txt"; + unless (open(BADNAME_TARGET, ">$badname_target")) { + warn("Unable to open $badname_target"); + return undef; + } + close(BADNAME_TARGET); + chmod 0666, $badname_target; + my $conffile="$libdir/server.conf"; my $nss_wrapper_pl = "$ENV{PERL} $self->{srcdir}/lib/nss_wrapper/nss_wrapper.pl"; @@ -1182,6 +1215,10 @@ sub provision($$$$$$) fruit:metadata = netatalk fruit:locking = netatalk fruit:encoding = native + +[badname-tmp] + path = $badnames_shrdir + guest ok = yes "; close(CONF); -- cgit v1.2.1