From: Gary Lockyer Date: Thu, 27 Apr 2017 00:02:29 +0000 (+1200) Subject: source3 smbd: tests for null pointer dereference X-Git-Tag: ldb-1.1.30~419 X-Git-Url: http://git.samba.org/samba.git/?p=ambi%2Fsamba-autobuild%2F.git;a=commitdiff_plain;h=85e98d2a3190653af56b1adb7597a903b8dec83b source3 smbd: tests for null pointer dereference Test case to replicate null pointer dereference in smbd, introduced in the auth logging changes. Signed-off-by: Gary Lockyer Reviewed-by: Andrew Bartlett Reviewed-by: Jeremy Allison --- diff --git a/python/samba/tests/net_join_no_spnego.py b/python/samba/tests/net_join_no_spnego.py new file mode 100644 index 00000000000..4da9c2e3729 --- /dev/null +++ b/python/samba/tests/net_join_no_spnego.py @@ -0,0 +1,59 @@ +# Unix SMB/CIFS implementation. +# +# Copyright (C) Catalyst.Net Ltd. 2017 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +""" +Detect null pointer exception in /source3/smbd/sessetup.c +""" + +import samba.tests +import os +from samba.net import Net, LIBNET_JOIN_AUTOMATIC +from samba.credentials import DONT_USE_KERBEROS +from samba import NTSTATUSError, ntstatus +import ctypes + +class NetJoinNoSpnegoTests(samba.tests.TestCase): + + def setUp(self): + super(NetJoinNoSpnegoTests, self).setUp() + self.remoteAddress = "/root/ncalrpc_as_system" + self.domain = os.environ["DOMAIN"] + self.server = os.environ["SERVER"] + + def tearDown(self): + super(NetJoinNoSpnegoTests, self).tearDown() + + def test_net_join_no_spnego(self): + lp = self.get_loadparm() + lp.set("client use spnego", "no") + netbios_name = "NetJoinNoSpnego" + machinepass = "abcdefghij" + creds = self.insta_creds(template=self.get_credentials(), + kerberos_state=DONT_USE_KERBEROS) + + net = Net(creds, lp, server=self.server) + + try: + (join_password, sid, domain_name) = net.join_member( + self.domain, netbios_name, LIBNET_JOIN_AUTOMATIC, + machinepass=machinepass) + except NTSTATUSError as e: + code = ctypes.c_uint32(e[0]).value + if code == ntstatus.NT_STATUS_CONNECTION_DISCONNECTED: + self.fail("Connection failure") + pass diff --git a/selftest/knownfail b/selftest/knownfail index 2cc9c70f1d6..44acf76e8af 100644 --- a/selftest/knownfail +++ b/selftest/knownfail @@ -329,3 +329,5 @@ # We currently don't send referrals for LDAP modify of non-replicated attrs ^samba4.ldap.rodc.python\(rodc\).__main__.RodcTests.test_modify_nonreplicated.* ^samba4.ldap.rodc_rwdc.python.*.__main__.RodcRwdcTests.test_change_password_reveal_on_demand_kerberos +# Test to detect null pointer issue in sessetup.c +^samba.tests.net_join_no_spnego.* diff --git a/source4/selftest/tests.py b/source4/selftest/tests.py index 8312f4886e9..f73dca38673 100755 --- a/source4/selftest/tests.py +++ b/source4/selftest/tests.py @@ -608,6 +608,9 @@ if have_jansson_support: 'SOCKET_WRAPPER_DEFAULT_IFACE': 11}) planoldpythontestsuite("ad_dc_ntvfs:local", "samba.tests.auth_log_ncalrpc", extra_args=['-U"$USERNAME%$PASSWORD"']) planoldpythontestsuite("ad_dc:local", "samba.tests.auth_log_ncalrpc", extra_args=['-U"$USERNAME%$PASSWORD"']) +planoldpythontestsuite("ad_dc:local", + "samba.tests.net_join_no_spnego", + extra_args=['-U"$USERNAME%$PASSWORD"']) # Need to test the password hashing in multiple environments to ensure that # all the possible options are covered #