The branch, master has been updated via 3c4d0ce samba_dnsupdate: Safely update/create names for Samba3 targets as well via 6d7c651 samba_dnsupdate: Move to using tmpfile/rename to keep the dns_hosts_file consistent via b320e7f selftest: Remove invalid security=share and rename secshare to simpleserver from 83f6067 Fix bug #9213 - Bad ASN.1 NegTokenInit packet can cause invalid free.
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 3c4d0ce46995f82921f538757783fa7a678a7fc1 Author: Andrew Bartlett <abart...@samba.org> Date: Wed Sep 26 10:02:43 2012 +1000 samba_dnsupdate: Safely update/create names for Samba3 targets as well This avoids unlocked writes to the dns_hosts_file, and may fix some of our issues on the build farm where large numbers of tests fail due to failed name resolution. Andrew Bartlett Autobuild-User(master): Andrew Bartlett <abart...@samba.org> Autobuild-Date(master): Wed Sep 26 05:48:25 CEST 2012 on sn-devel-104 commit 6d7c651f2f61b481c1e1ade1e2e0e756ccef2210 Author: Andrew Bartlett <abart...@samba.org> Date: Wed Sep 26 09:48:48 2012 +1000 samba_dnsupdate: Move to using tmpfile/rename to keep the dns_hosts_file consistent This may be the cause of some of the large failure modes on the build farm. Andrew Bartlett commit b320e7f93b5905558efa879992c125af66f0043c Author: Andrew Bartlett <abart...@samba.org> Date: Wed Sep 26 10:40:17 2012 +1000 selftest: Remove invalid security=share and rename secshare to simpleserver This avoids the loadparm code failing due to the invalid smb.conf entry, and removes the very last hint of security=share! Andrew Bartlett ----------------------------------------------------------------------- Summary of changes: selftest/target/Samba3.pm | 24 +++++++++++++----------- source3/Makefile.in | 2 +- source3/selftest/tests.py | 6 +++--- source4/scripting/bin/samba_dnsupdate | 29 +++++++++++++++++++++++------ 4 files changed, 40 insertions(+), 21 deletions(-) Changeset truncated at 500 lines: diff --git a/selftest/target/Samba3.pm b/selftest/target/Samba3.pm index c1f8fbd..df8b55c 100755 --- a/selftest/target/Samba3.pm +++ b/selftest/target/Samba3.pm @@ -153,8 +153,8 @@ sub setup_env($$$) if ($envname eq "s3dc") { return $self->setup_s3dc("$path/s3dc"); - } elsif ($envname eq "secshare") { - return $self->setup_secshare("$path/secshare"); + } elsif ($envname eq "simpleserver") { + return $self->setup_simpleserver("$path/simpleserver"); } elsif ($envname eq "maptoguest") { return $self->setup_maptoguest("$path/maptoguest"); } elsif ($envname eq "ktest") { @@ -337,7 +337,7 @@ sub setup_admember($$$$) return $ret; } -sub setup_secshare($$) +sub setup_simpleserver($$) { my ($self, $path) = @_; my $vfs_modulesdir_abs = $ENV{VFSLIBDIR}; @@ -346,8 +346,7 @@ sub setup_secshare($$) my $prefix_abs = abs_path($path); - my $secshare_options = " - security = share + my $simpleserver_options = " lanman auth = yes vfs objects = $vfs_modulesdir_abs/xattr_tdb.so $vfs_modulesdir_abs/streams_depot.so @@ -361,7 +360,7 @@ sub setup_secshare($$) my $vars = $self->provision($path, "LOCALSHARE4", "local4pass", - $secshare_options); + $simpleserver_options); $vars or return undef; @@ -371,7 +370,7 @@ sub setup_secshare($$) return undef; } - $self->{vars}->{secshare} = $vars; + $self->{vars}->{simpleserver} = $vars; return $vars; } @@ -1068,10 +1067,13 @@ domusers:X:$gid_domusers: } print "DONE\n"; - open(HOSTS, ">>$ENV{SELFTEST_PREFIX}/dns_host_file") or die("Unable to open $ENV{SELFTEST_PREFIX}/dns_host_file"); - print HOSTS "A $server. $server_ip -"; - close(HOSTS); + open(DNS_UPDATE_LIST, ">$prefix/dns_update_list") or die("Unable to open $$prefix/dns_update_list"); + print DNS_UPDATE_LIST "A $server. $server_ip"; + close(DNS_UPDATE_LIST); + + if (system("$ENV{SRCDIR_ABS}/source4/scripting/bin/samba_dnsupdate --all-interfaces --use-file=$dns_host_file -s $conffile --update-list=$prefix/dns_update_list --no-substiutions --no-credentials") != 0) { + die "Unable to update hostname into $dns_host_file"; + } $ret{SERVER_IP} = $server_ip; $ret{NMBD_TEST_LOG} = "$prefix/nmbd_test.log"; diff --git a/source3/Makefile.in b/source3/Makefile.in index 2ad8ecc..0e72fea 100644 --- a/source3/Makefile.in +++ b/source3/Makefile.in @@ -3328,7 +3328,7 @@ test:: all torture timelimit VFSLIBDIR="$(builddir)/bin" \ RUN_FROM_BUILD_FARM="$(RUN_FROM_BUILD_FARM)" \ SUBUNIT_FORMATTER="$(SUBUNIT_FORMATTER)" \ - PERL="$(PERL)" PYTHON="$(PYTHON)" \ + PERL="$(PERL)" PYTHON="$(PYTHON)" PYTHONPATH="$(srcdir)/../bin/python" \ $(srcdir)/selftest/s3-selftest.sh test-%: diff --git a/source3/selftest/tests.py b/source3/selftest/tests.py index f4a0d54..b07b690 100755 --- a/source3/selftest/tests.py +++ b/source3/selftest/tests.py @@ -104,7 +104,7 @@ for t in tests: tests = ["RW1", "RW2", "RW3"] for t in tests: - plantestsuite("samba3.smbtorture_s3.vfs_aio_fork(secshare).%s" % t, "secshare", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/vfs_aio_fork', '$USERNAME', '$PASSWORD', smbtorture3, "", "-l $LOCAL_PATH"]) + plantestsuite("samba3.smbtorture_s3.vfs_aio_fork(simpleserver).%s" % t, "simpleserver", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/vfs_aio_fork', '$USERNAME', '$PASSWORD', smbtorture3, "", "-l $LOCAL_PATH"]) posix_tests=[ "POSIX", "POSIX-APPEND"] @@ -200,7 +200,7 @@ plantestsuite("samba3.ntlm_auth.krb5(ktest:local) old ccache", "ktest:local", [o plantestsuite("samba3.ntlm_auth.krb5(ktest:local)", "ktest:local", [os.path.join(samba3srcdir, "script/tests/test_ntlm_auth_krb5.sh"), valgrindify(python), samba3srcdir, ntlm_auth, '$PREFIX/ktest/krb5_ccache-3', '$SERVER', configuration]) -for env in ["maptoguest", "secshare"]: +for env in ["maptoguest", "simpleserver"]: plantestsuite("samba3.blackbox.smbclient_auth.plain (%s) local creds" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_auth.sh"), '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD', smbclient, configuration + " --option=clientntlmv2auth=no --option=clientlanmanauth=yes"]) env = "maptoguest" @@ -343,7 +343,7 @@ for t in tests: plansmbtorturetestsuite(t, "plugin_s4_dc", '//$SERVER_IP/tmpcase -U$USERNAME%$PASSWORD') elif t == "raw.samba3hide" or t == "raw.samba3checkfsp" or t == "raw.samba3closeerr": plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD') - plansmbtorturetestsuite(t, "secshare", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD') + plansmbtorturetestsuite(t, "simpleserver", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD') plansmbtorturetestsuite(t, "plugin_s4_dc", '//$SERVER/tmp -U$USERNAME%$PASSWORD') elif t == "raw.session" or t == "smb2.session": plansmbtorturetestsuite(t, "s3dc", '//$SERVER_IP/tmp -U$USERNAME%$PASSWORD', 'plain') diff --git a/source4/scripting/bin/samba_dnsupdate b/source4/scripting/bin/samba_dnsupdate index d21496c..2f2c7b5 100755 --- a/source4/scripting/bin/samba_dnsupdate +++ b/source4/scripting/bin/samba_dnsupdate @@ -65,6 +65,7 @@ parser.add_option("--use-file", type="string", help="Use a file, rather than rea parser.add_option("--update-list", type="string", help="Add DNS names from the given file") parser.add_option("--fail-immediately", action='store_true', help="Exit on first failure") parser.add_option("--no-credentials", dest='nocreds', action='store_true', help="don't try and get credentials") +parser.add_option("--no-substiutions", dest='nosubs', action='store_true', help="don't try and expands variables in file specified by --update-list") creds = None ccachename = None @@ -278,10 +279,23 @@ def call_nsupdate(d): print "Calling nsupdate for %s" % d if opts.use_file is not None: - wfile = open(opts.use_file, 'a') - fcntl.lockf(wfile, fcntl.LOCK_EX) + try: + rfile = open(opts.use_file, 'r+') + except IOError: + # Perhaps create it + rfile = open(opts.use_file, 'w+') + # Open it for reading again, in case someone else got to it first + rfile = open(opts.use_file, 'r+') + fcntl.lockf(rfile, fcntl.LOCK_EX) + (file_dir, file_name) = os.path.split(opts.use_file) + (tmp_fd, tmpfile) = tempfile.mkstemp(dir=file_dir, prefix=file_name, suffix="XXXXXX") + wfile = os.fdopen(tmp_fd, 'a') + rfile.seek(0) + for line in rfile: + wfile.write(line) wfile.write(str(d)+"\n") - fcntl.lockf(wfile, fcntl.LOCK_UN) + os.rename(tmpfile, opts.use_file) + fcntl.lockf(rfile, fcntl.LOCK_UN) return normalised_name = d.name.rstrip('.') + '.' @@ -425,10 +439,13 @@ os.environ['KRB5_CONFIG'] = krb5conf file = open(dns_update_list, "r") -samdb = SamDB(url=lp.samdb_url(), session_info=system_session(), lp=lp) +if opts.nosubs: + sub_vars = {} +else: + samdb = SamDB(url=lp.samdb_url(), session_info=system_session(), lp=lp) -# get the substitution dictionary -sub_vars = get_subst_vars(samdb) + # get the substitution dictionary + sub_vars = get_subst_vars(samdb) # build up a list of update commands to pass to nsupdate update_list = [] -- Samba Shared Repository