[SCM] Samba Shared Repository - branch master updated

Jeremy Allison jra at samba.org
Sun Dec 23 20:34:04 UTC 2018


The branch, master has been updated
       via  be2a67319d1 auth/gensec: enforce that all DCERPC contexts support SIGN_PKT_HEADER
       via  b34eb437fe2 py:dcerpc/raw_testcase: add helper functions for ncacn_np: SMB connection support
       via  df7d4787152 py:dcerpc/raw_testcase: maintain self.secondary_address
       via  196cc4dbd3f py:dcerpc/raw_testcase: maintain self.max_{xmit,recv}_frag
       via  7fb5c575fbe py:dcerpc/raw_testcase: support DCERPC_AUTH_LEVEL_CONNECT in do_single_request()
       via  7a83cb02a1c py:dcerpc/raw_testcase: add start_with_alter to do_generic_bind()
       via  6574d2daef9 py:dcerpc/raw_protocol: test signing also with raw NTLMSSP and Kerberos
       via  f819df4de59 py:dcerpc/raw_protocol: test signing with and without header signing
       via  78a5e4ec6e2 py:dcerpc/raw_testcase: prepare get_auth_context_creds() and do_generic_bind() for header signing
       via  68e5dbe7845 py:dcerpc/raw_testcase: prepare do_generic_bind() for raw NTLMSSP and Kerberos authentication
       via  3924924e610 py:dcerpc/raw_testcase: use require DOMAIN/REALM in get_user_creds()
       via  87197f0c51a py:dcerpc/raw_testcase: use generate_request_auth() in do_single_request()
       via  0b741c49c12 py:dcerpc/raw_testcase: use check_response_auth() in do_single_request()
       via  168aa7c325e py:dcerpc/raw_testcase: add generate_request_auth() helper function
       via  fed1cdbe8bc py:dcerpc/raw_testcase: add check_response_auth() helper function
       via  6b1c385865f py:dcerpc/raw_protocol: rename _test_spnego_signing_auth_level_request to _test_auth_signing_auth_level_request
       via  8fc1f562607 py:dcerpc/raw_protocol: rename _test_spnego_bind_auth_level to_test_auth_bind_auth_level
       via  20ed4bd9200 py:dcerpc/raw_testcase: pass auth_context and stub_len to parse_auth() in order to assert
       via  59b84d6499c py:dcerpc/raw_protocol: let self._test_spnego_bind_auth_level() return auth_context
       via  1ba90daeb42 py:dcerpc/raw_testcase: let do_single_request() check stub length against alloc_hint
       via  da82aa2fe48 py:dcerpc/raw_protocol: make use of assertPadding()
       via  dae9c53fffa py:dcerpc/raw_testcase: make use of assertPadding()
       via  460a9d379ff py:dcerpc/raw_testcase: add assertPadding() that allows IGNORE_RANDOM_PAD=1
       via  fc4a8c17ef3 py:dcerpc/raw_protocol: explicitly disconnect additional connections
       via  cc2dc2e2b32 py:dcerpc/raw_testcase: disconnect on tearDown() of RawDCERPCTest
       via  71450d85123 py:dcerpc/raw_protocol: rename test_spnego_packet_bind_sign_privacy => test_spnego_packet_bind_seal
       via  c91446cf7af py:dcerpc/tests: rename dcerpc/string.py -> string_tests.py
       via  deb0c2bdcba s3:pylibsmb: add settimeout()
       via  e27b62762d4 s4:librpc: add python winspool bindings
       via  8b153f84403 s4:librpc: add python spoolss bindings
       via  4114d2d044e s4:librpc: add python witness bindings
       via  48815cc16a5 s3:libads: do an early return if we don't have a password for ads_kinit_password()
      from  ccd4759aaff nss/waf: check for secmethod_table.method_{attrlist,version} for aix >= 5.2

https://git.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit be2a67319d1b0f423d8fa19137c9a953398ddd50
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Oct 31 15:55:57 2018 +0100

    auth/gensec: enforce that all DCERPC contexts support SIGN_PKT_HEADER
    
    That's currently always the case and will simplifies the callers.
    
    WORKS now???
    TDB_NO_FSYNC=1 buildnice make -j test FAIL_IMMEDIATELY=1 SOCKET_WRAPPER_KEEP_PCAP=1 TESTS='samba4.rpc.lsa.secrets.*ncacn_np.*Kerberos.*Samba3.*fl2000dc'
    and
    TDB_NO_FSYNC=1 buildnice make -j test FAIL_IMMEDIATELY=1 SOCKET_WRAPPER_KEEP_PCAP=1 TESTS='samba3.rpc.lsa.*ncacn_ip_tcp.*nt4_dc'
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>
    
    Autobuild-User(master): Jeremy Allison <jra at samba.org>
    Autobuild-Date(master): Sun Dec 23 21:33:51 CET 2018 on sn-devel-144

commit b34eb437fe2508ad445125bc7139300981c43002
Author: Stefan Metzmacher <metze at samba.org>
Date:   Thu Nov 22 18:21:03 2018 +0100

    py:dcerpc/raw_testcase: add helper functions for ncacn_np: SMB connection support
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=7113
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=11892
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit df7d4787152eb2ef91d34633c3caf25f8ef68d3c
Author: Stefan Metzmacher <metze at samba.org>
Date:   Thu Nov 22 18:21:03 2018 +0100

    py:dcerpc/raw_testcase: maintain self.secondary_address
    
    This was it's easier to alter once add support for SMB connections.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=7113
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=11892
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 196cc4dbd3ffdc7c52c90c2b060c3e9ab1310380
Author: Stefan Metzmacher <metze at samba.org>
Date:   Thu Nov 22 18:21:03 2018 +0100

    py:dcerpc/raw_testcase: maintain self.max_{xmit,recv}_frag
    
    This was it's easier to alter once add support for SMB connections.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=7113
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=11892
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 7fb5c575fbecc4f7ab9703946fe64911d610c847
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon Nov 26 11:41:26 2018 +0100

    py:dcerpc/raw_testcase: support DCERPC_AUTH_LEVEL_CONNECT in do_single_request()
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=7113
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=11892
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 7a83cb02a1c5eb61624e53b127134ccd6f9b3fc8
Author: Stefan Metzmacher <metze at samba.org>
Date:   Thu Nov 22 08:29:32 2018 +0100

    py:dcerpc/raw_testcase: add start_with_alter to do_generic_bind()
    
    This will allow do_generic_bind() to be used to test
    security context multiplexing.
    
    Check with git show -w
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=7113
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=11892
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 6574d2daef9fc7b4b6b3b1c31261b8ea645a0911
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Nov 20 17:37:38 2018 +0100

    py:dcerpc/raw_protocol: test signing also with raw NTLMSSP and Kerberos
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=7113
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=11892
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit f819df4de59f63deea00d802a365b09b9c738ff0
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Nov 20 17:37:38 2018 +0100

    py:dcerpc/raw_protocol: test signing with and without header signing
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=7113
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=11892
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 78a5e4ec6e2bd486f64358f10c79bad240f34ac5
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Nov 20 15:15:04 2018 +0100

    py:dcerpc/raw_testcase: prepare get_auth_context_creds() and do_generic_bind() for header signing
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=7113
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=11892
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 68e5dbe78455bb2b83d5cb03f0d8e737a6564c7c
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Nov 20 15:15:04 2018 +0100

    py:dcerpc/raw_testcase: prepare do_generic_bind() for raw NTLMSSP and Kerberos authentication
    
    They just use 3 legs (messages) for the authentication, while SPNEGO
    uses 2 or 4 messages.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=7113
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=11892
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 3924924e610ee1c5b9ebb914e45b8c3bc996fa4f
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Nov 20 17:22:56 2018 +0100

    py:dcerpc/raw_testcase: use require DOMAIN/REALM in get_user_creds()
    
    This is the usage now:
    
    SMB_CONF_PATH=/dev/null \
        SERVER=172.31.9.188 \
        TARGET_HOSTNAME=w2012r2-188.w2012r2-l6.base \
        USERNAME=administrator \
        PASSWORD=A1b2C3d4 \
        DOMAIN=W2012R2-L6 \
        REALM=W2012R2-L6.BASE \
        IGNORE_RANDOM_PAD=1 \
        python/samba/tests/dcerpc/raw_protocol.py -v -f TestDCERPC_BIND
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=7113
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=11892
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 87197f0c51a2b81c4a8683984f3464a8081dcda4
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Nov 20 17:19:32 2018 +0100

    py:dcerpc/raw_testcase: use generate_request_auth() in do_single_request()
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=7113
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=11892
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 0b741c49c125a55380fa29d61deb8ff739b3e5f5
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Nov 20 16:02:50 2018 +0100

    py:dcerpc/raw_testcase: use check_response_auth() in do_single_request()
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=7113
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=11892
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 168aa7c325e25b9136970d4282297b501873cced
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Nov 20 17:16:05 2018 +0100

    py:dcerpc/raw_testcase: add generate_request_auth() helper function
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=7113
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=11892
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit fed1cdbe8bcf87f5227d9c79f228e03d13dfcb71
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Nov 20 16:02:50 2018 +0100

    py:dcerpc/raw_testcase: add check_response_auth() helper function
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=7113
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=11892
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 6b1c385865fd5371d332cb562d800ce1abab1cb5
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Nov 20 15:43:24 2018 +0100

    py:dcerpc/raw_protocol: rename _test_spnego_signing_auth_level_request to _test_auth_signing_auth_level_request
    
    We now pass down dcerpc.DCERPC_AUTH_TYPE_SPNEGO from callers
    instead of having SPNEGO specific functions.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=7113
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=11892
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 8fc1f5626077c94226d82e7807fdc36d63ee9ab6
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Nov 20 15:43:24 2018 +0100

    py:dcerpc/raw_protocol: rename _test_spnego_bind_auth_level to_test_auth_bind_auth_level
    
    We now pass down dcerpc.DCERPC_AUTH_TYPE_SPNEGO from callers
    instead of having SPNEGO specific functions.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=7113
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=11892
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 20ed4bd920095ddb9b89a3c04d27c6fba2990cf7
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Nov 20 15:48:08 2018 +0100

    py:dcerpc/raw_testcase: pass auth_context and stub_len to parse_auth() in order to assert
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=7113
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=11892
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 59b84d6499c5c22f76c203525a3994ab29038e7e
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Nov 20 15:38:06 2018 +0100

    py:dcerpc/raw_protocol: let self._test_spnego_bind_auth_level() return auth_context
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=7113
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=11892
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 1ba90daeb426df0273d1870e2893d691d42fe59b
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Nov 20 16:01:01 2018 +0100

    py:dcerpc/raw_testcase: let do_single_request() check stub length against alloc_hint
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=7113
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=11892
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit da82aa2fe48291e14059e3092d5416bb552b9325
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Dec 11 19:56:58 2018 +0100

    py:dcerpc/raw_protocol: make use of assertPadding()
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=7113
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=11892
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit dae9c53fffaa41124a3fa96cb95280c8ddcbecba
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Dec 11 19:56:58 2018 +0100

    py:dcerpc/raw_testcase: make use of assertPadding()
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=7113
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=11892
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 460a9d379ff7fb857535520f28cdcc4e49102c13
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Dec 11 19:56:58 2018 +0100

    py:dcerpc/raw_testcase: add assertPadding() that allows IGNORE_RANDOM_PAD=1
    
    Sometimes Windows returns non zero bytes in padding fields,
    we won't allow that by default, but IGNORE_RANDOM_PAD=1 will
    will only do the length check.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=7113
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=11892
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit fc4a8c17ef34aa3690510642277b7203c1973e7e
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Dec 11 19:42:09 2018 +0100

    py:dcerpc/raw_protocol: explicitly disconnect additional connections
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=7113
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=11892
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit cc2dc2e2b32967f5590bf59146520d760fecbab4
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Dec 11 19:41:08 2018 +0100

    py:dcerpc/raw_testcase: disconnect on tearDown() of RawDCERPCTest
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=7113
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=11892
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 71450d85123417464798ad63c9e9bd59214a79ef
Author: Stefan Metzmacher <metze at samba.org>
Date:   Thu Dec 13 23:57:35 2018 +0100

    py:dcerpc/raw_protocol: rename test_spnego_packet_bind_sign_privacy => test_spnego_packet_bind_seal
    
    This makes it consistent with other tests like
    test_spnego_integrity_bind_seal.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=7113
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=11892
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit c91446cf7af586a7f4731773649e1628acf08010
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Nov 20 08:25:31 2018 +0100

    py:dcerpc/tests: rename dcerpc/string.py -> string_tests.py
    
    Otherwise it's not possible to run the raw_protocol tests anymore:
    
    python/samba/tests/dcerpc/raw_protocol.py
    Traceback (most recent call last):
      File "python/samba/tests/dcerpc/raw_protocol.py", line 26, in <module>
        import samba.dcerpc.dcerpc as dcerpc
      File "bin/python/samba/__init__.py", line 32, in <module>
        from samba.compat import string_types
      File "bin/python/samba/compat.py", line 151, in <module>
        from urllib import quote as urllib_quote
      File "/usr/lib/python2.7/urllib.py", line 25, in <module>
        import string
      File "/abs/path/samba/python/samba/tests/dcerpc/string.py", line 22, in <module>
        # Some strings for ctype-style character classification
      File "bin/python/samba/tests/__init__.py", line 36, in <module>
        from samba.compat import text_type
    ImportError: cannot import name text_type
    
    This allows the following again:
    
    SMB_CONF_PATH=/dev/null \
        SERVER=172.31.9.188 \
        TARGET_HOSTNAME=w2012r2-188.w2012r2-l6.base \
        USERNAME=administrator \
        PASSWORD=A1b2C3d4 \
        DOMAIN=W2012R2-L6 \
        REALM=W2012R2-L6.BASE \
        python/samba/tests/dcerpc/raw_protocol.py -v -f TestDCERPC_BIND
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=7113
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=11892
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit deb0c2bdcbad32cb573d72ad540ba47ced2e0807
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Dec 19 15:18:17 2018 +0100

    s3:pylibsmb: add settimeout()
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=7113
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=11892
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=13676
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit e27b62762d4382b88b77aa1e80364e515fa54e0e
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Sep 13 06:31:04 2016 +0200

    s4:librpc: add python winspool bindings
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 8b153f844030e0268f315e27154abda51c7931f8
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Sep 13 06:31:04 2016 +0200

    s4:librpc: add python spoolss bindings
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 4114d2d044ef8eaca5899b84e4dd52bf4dd005b0
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Sep 13 05:51:57 2016 +0200

    s4:librpc: add python witness bindings
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 48815cc16a5471c85236d05e3f0bea013d39f3bd
Author: Stefan Metzmacher <metze at samba.org>
Date:   Fri Oct 7 18:18:56 2016 +0200

    s3:libads: do an early return if we don't have a password for ads_kinit_password()
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

-----------------------------------------------------------------------

Summary of changes:
 auth/gensec/gensec.c                               |  16 +
 python/samba/tests/dcerpc/raw_protocol.py          | 284 +++++------
 python/samba/tests/dcerpc/raw_testcase.py          | 557 ++++++++++++++++-----
 .../tests/dcerpc/{string.py => string_tests.py}    |   0
 selftest/tests.py                                  |   2 +-
 source3/libads/kerberos_util.c                     |   9 +-
 source3/libsmb/pylibsmb.c                          |  16 +
 source4/librpc/wscript_build                       |  18 +
 8 files changed, 615 insertions(+), 287 deletions(-)
 rename python/samba/tests/dcerpc/{string.py => string_tests.py} (100%)


Changeset truncated at 500 lines:

diff --git a/auth/gensec/gensec.c b/auth/gensec/gensec.c
index e021d0ce3fe..91d8cce3f4c 100644
--- a/auth/gensec/gensec.c
+++ b/auth/gensec/gensec.c
@@ -293,6 +293,8 @@ _PUBLIC_ size_t gensec_max_update_size(struct gensec_security *gensec_security)
 
 static NTSTATUS gensec_verify_features(struct gensec_security *gensec_security)
 {
+	bool ok;
+
 	/*
 	 * gensec_want_feature(GENSEC_FEATURE_SIGN)
 	 * and
@@ -319,6 +321,20 @@ static NTSTATUS gensec_verify_features(struct gensec_security *gensec_security)
 		}
 	}
 
+	if (gensec_security->dcerpc_auth_level < DCERPC_AUTH_LEVEL_PACKET) {
+		return NT_STATUS_OK;
+	}
+
+	ok = gensec_have_feature(gensec_security,
+				 GENSEC_FEATURE_SIGN_PKT_HEADER);
+	if (!ok) {
+		DBG_ERR("backend [%s] does not support header signing! "
+			"auth_level[0x%x]\n",
+			gensec_security->ops->name,
+			gensec_security->dcerpc_auth_level);
+		return NT_STATUS_INTERNAL_ERROR;
+	}
+
 	return NT_STATUS_OK;
 }
 
diff --git a/python/samba/tests/dcerpc/raw_protocol.py b/python/samba/tests/dcerpc/raw_protocol.py
index d752481f6f5..aab6d86253f 100755
--- a/python/samba/tests/dcerpc/raw_protocol.py
+++ b/python/samba/tests/dcerpc/raw_protocol.py
@@ -65,9 +65,7 @@ class TestDCERPC_BIND(RawDCERPCTest):
         self.assertNotEquals(rep.u.assoc_group_id, req.u.assoc_group_id)
         self.assertEquals(rep.u.secondary_address_size, 4)
         self.assertEquals(rep.u.secondary_address, "%d" % self.tcp_port)
-        self.assertEquals(len(rep.u._pad1), 2)
-        # sometimes windows sends random bytes
-        # self.assertEquals(rep.u._pad1, '\0' * 2)
+        self.assertPadding(rep.u._pad1, 2)
         self.assertEquals(rep.u.num_results, 1)
         self.assertEquals(rep.u.ctx_list[0].result,
                           dcerpc.DCERPC_BIND_ACK_RESULT_ACCEPTANCE)
@@ -110,9 +108,7 @@ class TestDCERPC_BIND(RawDCERPCTest):
         self.assertNotEquals(rep.u.assoc_group_id, req.u.assoc_group_id)
         self.assertEquals(rep.u.secondary_address_size, 4)
         self.assertEquals(rep.u.secondary_address, "%d" % self.tcp_port)
-        self.assertEquals(len(rep.u._pad1), 2)
-        # sometimes windows sends random bytes
-        # self.assertEquals(rep.u._pad1, '\0' * 2)
+        self.assertPadding(rep.u._pad1, 2)
         self.assertEquals(rep.u.num_results, 1)
         self.assertEquals(rep.u.ctx_list[0].result,
                           dcerpc.DCERPC_BIND_ACK_RESULT_ACCEPTANCE)
@@ -132,9 +128,7 @@ class TestDCERPC_BIND(RawDCERPCTest):
         self.assertNotEquals(rep.u.assoc_group_id, req.u.assoc_group_id)
         self.assertEquals(rep.u.secondary_address_size, 0)
         self.assertEquals(rep.u.secondary_address, "")
-        self.assertEquals(len(rep.u._pad1), 2)
-        # sometimes windows sends random bytes
-        # self.assertEquals(rep.u._pad1, '\0' * 2)
+        self.assertPadding(rep.u._pad1, 2)
         self.assertEquals(rep.u.num_results, 1)
         self.assertEquals(rep.u.ctx_list[0].result,
                           dcerpc.DCERPC_BIND_ACK_RESULT_ACCEPTANCE)
@@ -372,8 +366,7 @@ class TestDCERPC_BIND(RawDCERPCTest):
         self.assertEquals(rep.u.num_versions, 1)
         self.assertEquals(rep.u.versions[0].rpc_vers, req.rpc_vers)
         self.assertEquals(rep.u.versions[0].rpc_vers_minor, req.rpc_vers_minor)
-        self.assertEquals(len(rep.u._pad), 3)
-        self.assertEquals(rep.u._pad, b'\0' * 3)
+        self.assertPadding(rep.u._pad, 3)
 
     def test_invalid_auth_noctx(self):
         req = self.generate_bind(call_id=0)
@@ -387,8 +380,7 @@ class TestDCERPC_BIND(RawDCERPCTest):
         self.assertEquals(rep.u.num_versions, 1)
         self.assertEquals(rep.u.versions[0].rpc_vers, req.rpc_vers)
         self.assertEquals(rep.u.versions[0].rpc_vers_minor, req.rpc_vers_minor)
-        self.assertEquals(len(rep.u._pad), 3)
-        self.assertEquals(rep.u._pad, b'\0' * 3)
+        self.assertPadding(rep.u._pad, 3)
 
     def test_no_auth_valid_valid_request(self):
         ndr32 = base.transfer_syntax_ndr()
@@ -410,8 +402,7 @@ class TestDCERPC_BIND(RawDCERPCTest):
         self.assertNotEquals(rep.u.assoc_group_id, req.u.assoc_group_id)
         self.assertEquals(rep.u.secondary_address_size, 4)
         self.assertEquals(rep.u.secondary_address, "%d" % self.tcp_port)
-        self.assertEquals(len(rep.u._pad1), 2)
-        self.assertEquals(rep.u._pad1, b'\0' * 2)
+        self.assertPadding(rep.u._pad1, 2)
         self.assertEquals(rep.u.num_results, 1)
         self.assertEquals(rep.u.ctx_list[0].result,
                           dcerpc.DCERPC_BIND_ACK_RESULT_ACCEPTANCE)
@@ -438,8 +429,7 @@ class TestDCERPC_BIND(RawDCERPCTest):
         self.assertEquals(rep.u.num_versions, 1)
         self.assertEquals(rep.u.versions[0].rpc_vers, req.rpc_vers)
         self.assertEquals(rep.u.versions[0].rpc_vers_minor, req.rpc_vers_minor)
-        self.assertEquals(len(rep.u._pad), 3)
-        self.assertEquals(rep.u._pad, b'\0' * 3)
+        self.assertPadding(rep.u._pad, 3)
 
         # wait for a disconnect
         rep = self.recv_pdu()
@@ -458,8 +448,7 @@ class TestDCERPC_BIND(RawDCERPCTest):
         self.assertEquals(rep.u.num_versions, 1)
         self.assertEquals(rep.u.versions[0].rpc_vers, req.rpc_vers)
         self.assertEquals(rep.u.versions[0].rpc_vers_minor, req.rpc_vers_minor)
-        self.assertEquals(len(rep.u._pad), 3)
-        self.assertEquals(rep.u._pad, b'\0' * 3)
+        self.assertPadding(rep.u._pad, 3)
 
         # wait for a disconnect
         rep = self.recv_pdu()
@@ -486,8 +475,7 @@ class TestDCERPC_BIND(RawDCERPCTest):
         self.assertNotEquals(rep.u.assoc_group_id, req.u.assoc_group_id)
         self.assertEquals(rep.u.secondary_address_size, 4)
         self.assertEquals(rep.u.secondary_address, "%d" % self.tcp_port)
-        self.assertEquals(len(rep.u._pad1), 2)
-        self.assertEquals(rep.u._pad1, b'\0' * 2)
+        self.assertPadding(rep.u._pad1, 2)
         self.assertEquals(rep.u.num_results, 1)
         self.assertEquals(rep.u.ctx_list[0].result,
                           dcerpc.DCERPC_BIND_ACK_RESULT_ACCEPTANCE)
@@ -539,8 +527,7 @@ class TestDCERPC_BIND(RawDCERPCTest):
         self.assertNotEquals(rep.u.assoc_group_id, req.u.assoc_group_id)
         self.assertEquals(rep.u.secondary_address_size, 4)
         self.assertEquals(rep.u.secondary_address, "%d" % self.tcp_port)
-        self.assertEquals(len(rep.u._pad1), 2)
-        self.assertEquals(rep.u._pad1, b'\0' * 2)
+        self.assertPadding(rep.u._pad1, 2)
         self.assertEquals(rep.u.num_results, 1)
         self.assertEquals(rep.u.ctx_list[0].result,
                           dcerpc.DCERPC_BIND_ACK_RESULT_ACCEPTANCE)
@@ -559,8 +546,7 @@ class TestDCERPC_BIND(RawDCERPCTest):
         self.assertEquals(rep.u.max_recv_frag, req.u.max_recv_frag)
         self.assertNotEquals(rep.u.assoc_group_id, req.u.assoc_group_id)
         self.assertEquals(rep.u.secondary_address_size, 0)
-        self.assertEquals(len(rep.u._pad1), 2)
-        #self.assertEquals(rep.u._pad1, '\0' * 2)
+        self.assertPadding(rep.u._pad1, 2)
         self.assertEquals(rep.u.num_results, 1)
         self.assertEquals(rep.u.ctx_list[0].result,
                           dcerpc.DCERPC_BIND_ACK_RESULT_ACCEPTANCE)
@@ -609,8 +595,7 @@ class TestDCERPC_BIND(RawDCERPCTest):
         self.assertNotEquals(rep.u.assoc_group_id, req.u.assoc_group_id)
         self.assertEquals(rep.u.secondary_address_size, 4)
         self.assertEquals(rep.u.secondary_address, "%d" % self.tcp_port)
-        self.assertEquals(len(rep.u._pad1), 2)
-        self.assertEquals(rep.u._pad1, b'\0' * 2)
+        self.assertPadding(rep.u._pad1, 2)
         self.assertEquals(rep.u.num_results, 1)
         self.assertEquals(rep.u.ctx_list[0].result,
                           dcerpc.DCERPC_BIND_ACK_RESULT_PROVIDER_REJECTION)
@@ -629,8 +614,7 @@ class TestDCERPC_BIND(RawDCERPCTest):
         self.assertEquals(rep.u.max_recv_frag, req.u.max_recv_frag)
         self.assertNotEquals(rep.u.assoc_group_id, req.u.assoc_group_id)
         self.assertEquals(rep.u.secondary_address_size, 0)
-        self.assertEquals(len(rep.u._pad1), 2)
-        #self.assertEquals(rep.u._pad1, '\0' * 2)
+        self.assertPadding(rep.u._pad1, 2)
         self.assertEquals(rep.u.num_results, 1)
         self.assertEquals(rep.u.ctx_list[0].result,
                           dcerpc.DCERPC_BIND_ACK_RESULT_PROVIDER_REJECTION)
@@ -667,8 +651,7 @@ class TestDCERPC_BIND(RawDCERPCTest):
         self.assertEquals(rep.u.max_recv_frag, req.u.max_recv_frag)
         self.assertNotEquals(rep.u.assoc_group_id, req.u.assoc_group_id)
         self.assertEquals(rep.u.secondary_address_size, 0)
-        self.assertEquals(len(rep.u._pad1), 2)
-        #self.assertEquals(rep.u._pad1, '\0' * 2)
+        self.assertPadding(rep.u._pad1, 2)
         self.assertEquals(rep.u.num_results, 1)
         self.assertEquals(rep.u.ctx_list[0].result,
                           dcerpc.DCERPC_BIND_ACK_RESULT_PROVIDER_REJECTION)
@@ -699,8 +682,7 @@ class TestDCERPC_BIND(RawDCERPCTest):
         self.assertEquals(rep.u.num_versions, 1)
         self.assertEquals(rep.u.versions[0].rpc_vers, req.rpc_vers)
         self.assertEquals(rep.u.versions[0].rpc_vers_minor, req.rpc_vers_minor)
-        self.assertEquals(len(rep.u._pad), 3)
-        self.assertEquals(rep.u._pad, b'\0' * 3)
+        self.assertPadding(rep.u._pad, 3)
 
         # wait for a disconnect
         rep = self.recv_pdu()
@@ -729,8 +711,7 @@ class TestDCERPC_BIND(RawDCERPCTest):
         self.assertNotEquals(rep.u.assoc_group_id, req.u.assoc_group_id)
         self.assertEquals(rep.u.secondary_address_size, 4)
         self.assertEquals(rep.u.secondary_address, "%d" % self.tcp_port)
-        self.assertEquals(len(rep.u._pad1), 2)
-        self.assertEquals(rep.u._pad1, b'\0' * 2)
+        self.assertPadding(rep.u._pad1, 2)
         self.assertEquals(rep.u.num_results, 1)
         self.assertEquals(rep.u.ctx_list[0].result,
                           dcerpc.DCERPC_BIND_ACK_RESULT_ACCEPTANCE)
@@ -790,8 +771,7 @@ class TestDCERPC_BIND(RawDCERPCTest):
         self.assertNotEquals(rep.u.assoc_group_id, req.u.assoc_group_id)
         self.assertEquals(rep.u.secondary_address_size, 4)
         self.assertEquals(rep.u.secondary_address, "%d" % self.tcp_port)
-        self.assertEquals(len(rep.u._pad1), 2)
-        self.assertEquals(rep.u._pad1, b'\0' * 2)
+        self.assertPadding(rep.u._pad1, 2)
         self.assertEquals(rep.u.num_results, 1)
         self.assertEquals(rep.u.ctx_list[0].result,
                           dcerpc.DCERPC_BIND_ACK_RESULT_ACCEPTANCE)
@@ -852,8 +832,7 @@ class TestDCERPC_BIND(RawDCERPCTest):
         self.assertNotEquals(rep.u.assoc_group_id, req.u.assoc_group_id)
         self.assertEquals(rep.u.secondary_address_size, 4)
         self.assertEquals(rep.u.secondary_address, "%d" % self.tcp_port)
-        self.assertEquals(len(rep.u._pad1), 2)
-        self.assertEquals(rep.u._pad1, b'\0' * 2)
+        self.assertPadding(rep.u._pad1, 2)
         self.assertEquals(rep.u.num_results, 1)
         self.assertEquals(rep.u.ctx_list[0].result,
                           dcerpc.DCERPC_BIND_ACK_RESULT_ACCEPTANCE)
@@ -881,8 +860,7 @@ class TestDCERPC_BIND(RawDCERPCTest):
         self.assertEquals(rep.u.max_recv_frag, req.u.max_recv_frag)
         self.assertNotEquals(rep.u.assoc_group_id, req.u.assoc_group_id)
         self.assertEquals(rep.u.secondary_address_size, 0)
-        self.assertEquals(len(rep.u._pad1), 2)
-        #self.assertEquals(rep.u._pad1, '\0' * 2)
+        self.assertPadding(rep.u._pad1, 2)
         self.assertEquals(rep.u.num_results, 1)
         self.assertEquals(rep.u.ctx_list[0].result,
                           dcerpc.DCERPC_BIND_ACK_RESULT_PROVIDER_REJECTION)
@@ -930,8 +908,7 @@ class TestDCERPC_BIND(RawDCERPCTest):
         self.assertNotEquals(rep.u.assoc_group_id, req.u.assoc_group_id)
         self.assertEquals(rep.u.secondary_address_size, 4)
         self.assertEquals(rep.u.secondary_address, "%d" % self.tcp_port)
-        self.assertEquals(len(rep.u._pad1), 2)
-        self.assertEquals(rep.u._pad1, b'\0' * 2)
+        self.assertPadding(rep.u._pad1, 2)
         self.assertEquals(rep.u.num_results, 1)
         self.assertEquals(rep.u.ctx_list[0].result,
                           dcerpc.DCERPC_BIND_ACK_RESULT_PROVIDER_REJECTION)
@@ -956,8 +933,7 @@ class TestDCERPC_BIND(RawDCERPCTest):
         self.assertEquals(rep.u.max_recv_frag, req.u.max_recv_frag)
         self.assertNotEquals(rep.u.assoc_group_id, req.u.assoc_group_id)
         self.assertEquals(rep.u.secondary_address_size, 0)
-        self.assertEquals(len(rep.u._pad1), 2)
-        #self.assertEquals(rep.u._pad1, '\0' * 2)
+        self.assertPadding(rep.u._pad1, 2)
         self.assertEquals(rep.u.num_results, 1)
         self.assertEquals(rep.u.ctx_list[0].result,
                           dcerpc.DCERPC_BIND_ACK_RESULT_ACCEPTANCE)
@@ -995,8 +971,7 @@ class TestDCERPC_BIND(RawDCERPCTest):
         self.assertEquals(rep.u.max_recv_frag, req.u.max_recv_frag)
         self.assertNotEquals(rep.u.assoc_group_id, req.u.assoc_group_id)
         self.assertEquals(rep.u.secondary_address_size, 0)
-        self.assertEquals(len(rep.u._pad1), 2)
-        #self.assertEquals(rep.u._pad1, '\0' * 2)
+        self.assertPadding(rep.u._pad1, 2)
         self.assertEquals(rep.u.num_results, 1)
         self.assertEquals(rep.u.ctx_list[0].result,
                           dcerpc.DCERPC_BIND_ACK_RESULT_ACCEPTANCE)
@@ -1034,8 +1009,7 @@ class TestDCERPC_BIND(RawDCERPCTest):
         self.assertEquals(rep.u.max_recv_frag, req.u.max_recv_frag)
         self.assertNotEquals(rep.u.assoc_group_id, req.u.assoc_group_id)
         self.assertEquals(rep.u.secondary_address_size, 0)
-        self.assertEquals(len(rep.u._pad1), 2)
-        #self.assertEquals(rep.u._pad1, '\0' * 2)
+        self.assertPadding(rep.u._pad1, 2)
         self.assertEquals(rep.u.num_results, 1)
         self.assertEquals(rep.u.ctx_list[0].result,
                           dcerpc.DCERPC_BIND_ACK_RESULT_ACCEPTANCE)
@@ -1080,8 +1054,7 @@ class TestDCERPC_BIND(RawDCERPCTest):
         self.assertEquals(rep.u.max_recv_frag, req.u.max_recv_frag)
         self.assertNotEquals(rep.u.assoc_group_id, req.u.assoc_group_id)
         self.assertEquals(rep.u.secondary_address_size, 0)
-        self.assertEquals(len(rep.u._pad1), 2)
-        #self.assertEquals(rep.u._pad1, '\0' * 2)
+        self.assertPadding(rep.u._pad1, 2)
         self.assertEquals(rep.u.num_results, 2)
         self.assertEquals(rep.u.ctx_list[0].result,
                           dcerpc.DCERPC_BIND_ACK_RESULT_ACCEPTANCE)
@@ -1117,8 +1090,7 @@ class TestDCERPC_BIND(RawDCERPCTest):
         self.assertEquals(rep.u.max_recv_frag, req.u.max_recv_frag)
         self.assertNotEquals(rep.u.assoc_group_id, req.u.assoc_group_id)
         self.assertEquals(rep.u.secondary_address_size, 0)
-        self.assertEquals(len(rep.u._pad1), 2)
-        #self.assertEquals(rep.u._pad1, '\0' * 2)
+        self.assertPadding(rep.u._pad1, 2)
         self.assertEquals(rep.u.num_results, 2)
         self.assertEquals(rep.u.ctx_list[0].result,
                           dcerpc.DCERPC_BIND_ACK_RESULT_ACCEPTANCE)
@@ -1167,8 +1139,7 @@ class TestDCERPC_BIND(RawDCERPCTest):
         self.assertEquals(rep.u.max_recv_frag, req.u.max_recv_frag)
         self.assertNotEquals(rep.u.assoc_group_id, req.u.assoc_group_id)
         self.assertEquals(rep.u.secondary_address_size, 0)
-        self.assertEquals(len(rep.u._pad1), 2)
-        #self.assertEquals(rep.u._pad1, '\0' * 2)
+        self.assertPadding(rep.u._pad1, 2)
         self.assertEquals(rep.u.num_results, 2)
         self.assertEquals(rep.u.ctx_list[0].result,
                           dcerpc.DCERPC_BIND_ACK_RESULT_ACCEPTANCE)
@@ -1231,8 +1202,7 @@ class TestDCERPC_BIND(RawDCERPCTest):
         self.assertEquals(rep.u.max_recv_frag, req.u.max_recv_frag)
         self.assertNotEquals(rep.u.assoc_group_id, req.u.assoc_group_id)
         self.assertEquals(rep.u.secondary_address_size, 0)
-        self.assertEquals(len(rep.u._pad1), 2)
-        #self.assertEquals(rep.u._pad1, '\0' * 2)
+        self.assertPadding(rep.u._pad1, 2)
         self.assertEquals(rep.u.num_results, 2)
         self.assertEquals(rep.u.ctx_list[0].result,
                           dcerpc.DCERPC_BIND_ACK_RESULT_ACCEPTANCE)
@@ -1268,8 +1238,7 @@ class TestDCERPC_BIND(RawDCERPCTest):
         self.assertEquals(rep.u.max_recv_frag, req.u.max_recv_frag)
         self.assertNotEquals(rep.u.assoc_group_id, req.u.assoc_group_id)
         self.assertEquals(rep.u.secondary_address_size, 0)
-        self.assertEquals(len(rep.u._pad1), 2)
-        #self.assertEquals(rep.u._pad1, '\0' * 2)
+        self.assertPadding(rep.u._pad1, 2)
         self.assertEquals(rep.u.num_results, 2)
         self.assertEquals(rep.u.ctx_list[0].result,
                           dcerpc.DCERPC_BIND_ACK_RESULT_ACCEPTANCE)
@@ -1319,8 +1288,7 @@ class TestDCERPC_BIND(RawDCERPCTest):
         self.assertNotEquals(rep.u.assoc_group_id, req.u.assoc_group_id)
         self.assertEquals(rep.u.secondary_address_size, 4)
         self.assertEquals(rep.u.secondary_address, "%d" % self.tcp_port)
-        self.assertEquals(len(rep.u._pad1), 2)
-        self.assertEquals(rep.u._pad1, b'\0' * 2)
+        self.assertPadding(rep.u._pad1, 2)
         self.assertEquals(rep.u.num_results, 1)
         self.assertEquals(rep.u.ctx_list[0].result,
                           dcerpc.DCERPC_BIND_ACK_RESULT_NEGOTIATE_ACK)
@@ -1356,8 +1324,7 @@ class TestDCERPC_BIND(RawDCERPCTest):
         self.assertNotEquals(rep.u.assoc_group_id, req.u.assoc_group_id)
         self.assertEquals(rep.u.secondary_address_size, 4)
         self.assertEquals(rep.u.secondary_address, "%d" % self.tcp_port)
-        self.assertEquals(len(rep.u._pad1), 2)
-        self.assertEquals(rep.u._pad1, b'\0' * 2)
+        self.assertPadding(rep.u._pad1, 2)
         self.assertEquals(rep.u.num_results, 1)
         self.assertEquals(rep.u.ctx_list[0].result,
                           dcerpc.DCERPC_BIND_ACK_RESULT_NEGOTIATE_ACK)
@@ -1391,8 +1358,7 @@ class TestDCERPC_BIND(RawDCERPCTest):
         self.assertNotEquals(rep.u.assoc_group_id, req.u.assoc_group_id)
         self.assertEquals(rep.u.secondary_address_size, 4)
         self.assertEquals(rep.u.secondary_address, "%d" % self.tcp_port)
-        self.assertEquals(len(rep.u._pad1), 2)
-        self.assertEquals(rep.u._pad1, b'\0' * 2)
+        self.assertPadding(rep.u._pad1, 2)
         self.assertEquals(rep.u.num_results, 1)
         self.assertEquals(rep.u.ctx_list[0].result,
                           dcerpc.DCERPC_BIND_ACK_RESULT_PROVIDER_REJECTION)
@@ -1434,8 +1400,7 @@ class TestDCERPC_BIND(RawDCERPCTest):
         self.assertEquals(rep.u.num_versions, 1)
         self.assertEquals(rep.u.versions[0].rpc_vers, req.rpc_vers)
         self.assertEquals(rep.u.versions[0].rpc_vers_minor, req.rpc_vers_minor)
-        self.assertEquals(len(rep.u._pad), 3)
-        self.assertEquals(rep.u._pad, b'\0' * 3)
+        self.assertPadding(rep.u._pad, 3)
 
         # wait for a disconnect
         rep = self.recv_pdu()
@@ -1465,8 +1430,7 @@ class TestDCERPC_BIND(RawDCERPCTest):
         self.assertNotEquals(rep.u.assoc_group_id, req.u.assoc_group_id)
         self.assertEquals(rep.u.secondary_address_size, 4)
         self.assertEquals(rep.u.secondary_address, "%d" % self.tcp_port)
-        self.assertEquals(len(rep.u._pad1), 2)
-        self.assertEquals(rep.u._pad1, b'\0' * 2)
+        self.assertPadding(rep.u._pad1, 2)
         self.assertEquals(rep.u.num_results, 1)
         self.assertEquals(rep.u.ctx_list[0].result,
                           dcerpc.DCERPC_BIND_ACK_RESULT_NEGOTIATE_ACK)
@@ -1501,8 +1465,7 @@ class TestDCERPC_BIND(RawDCERPCTest):
         self.assertNotEquals(rep.u.assoc_group_id, req.u.assoc_group_id)
         self.assertEquals(rep.u.secondary_address_size, 4)
         self.assertEquals(rep.u.secondary_address, "%d" % self.tcp_port)
-        self.assertEquals(len(rep.u._pad1), 2)
-        self.assertEquals(rep.u._pad1, b'\0' * 2)
+        self.assertPadding(rep.u._pad1, 2)
         self.assertEquals(rep.u.num_results, 1)
         self.assertEquals(rep.u.ctx_list[0].result,
                           dcerpc.DCERPC_BIND_ACK_RESULT_NEGOTIATE_ACK)
@@ -1557,8 +1520,7 @@ class TestDCERPC_BIND(RawDCERPCTest):
         self.assertEquals(rep.u.num_versions, 1)
         self.assertEquals(rep.u.versions[0].rpc_vers, req.rpc_vers)
         self.assertEquals(rep.u.versions[0].rpc_vers_minor, req.rpc_vers_minor)
-        self.assertEquals(len(rep.u._pad), 3)
-        self.assertEquals(rep.u._pad, b'\0' * 3)
+        self.assertPadding(rep.u._pad, 3)
 
         # wait for a disconnect
         rep = self.recv_pdu()
@@ -1626,8 +1588,7 @@ class TestDCERPC_BIND(RawDCERPCTest):
         self.assertNotEquals(rep.u.assoc_group_id, req.u.assoc_group_id)
         self.assertEquals(rep.u.secondary_address_size, 4)
         self.assertEquals(rep.u.secondary_address, "%d" % self.tcp_port)
-        self.assertEquals(len(rep.u._pad1), 2)
-        self.assertEquals(rep.u._pad1, b'\0' * 2)
+        self.assertPadding(rep.u._pad1, 2)
         self.assertEquals(rep.u.num_results, 1)
         self.assertEquals(rep.u.ctx_list[0].result,
                           dcerpc.DCERPC_BIND_ACK_RESULT_ACCEPTANCE)
@@ -1715,8 +1676,7 @@ class TestDCERPC_BIND(RawDCERPCTest):
         self.assertNotEquals(rep.u.assoc_group_id, req.u.assoc_group_id)
         self.assertEquals(rep.u.secondary_address_size, 4)
         self.assertEquals(rep.u.secondary_address, "%d" % self.tcp_port)
-        self.assertEquals(len(rep.u._pad1), 2)
-        self.assertEquals(rep.u._pad1, b'\0' * 2)
+        self.assertPadding(rep.u._pad1, 2)
         self.assertEquals(rep.u.num_results, 1)
         self.assertEquals(rep.u.ctx_list[0].result,
                           dcerpc.DCERPC_BIND_ACK_RESULT_ACCEPTANCE)
@@ -1746,8 +1706,7 @@ class TestDCERPC_BIND(RawDCERPCTest):
         self.assertEquals(rep.u.max_recv_frag, rep_both)
         self.assertEquals(rep.u.assoc_group_id, rep.u.assoc_group_id)
         self.assertEquals(rep.u.secondary_address_size, 0)
-        self.assertEquals(len(rep.u._pad1), 2)
-        #self.assertEquals(rep.u._pad1, '\0' * 2)
+        self.assertPadding(rep.u._pad1, 2)
         self.assertEquals(rep.u.num_results, 1)
         self.assertEquals(rep.u.ctx_list[0].result,
                           dcerpc.DCERPC_BIND_ACK_RESULT_ACCEPTANCE)
@@ -1875,8 +1834,7 @@ class TestDCERPC_BIND(RawDCERPCTest):
         self.assertNotEquals(rep.u.assoc_group_id, req.u.assoc_group_id)
         self.assertEquals(rep.u.secondary_address_size, 4)
         self.assertEquals(rep.u.secondary_address, "%d" % self.tcp_port)
-        self.assertEquals(len(rep.u._pad1), 2)
-        self.assertEquals(rep.u._pad1, b'\0' * 2)
+        self.assertPadding(rep.u._pad1, 2)
         self.assertEquals(rep.u.num_results, 1)
         self.assertEquals(rep.u.ctx_list[0].result,
                           dcerpc.DCERPC_BIND_ACK_RESULT_ACCEPTANCE)
@@ -2660,8 +2618,7 @@ class TestDCERPC_BIND(RawDCERPCTest):
         self.assertNotEquals(rep.u.assoc_group_id, req.u.assoc_group_id)
         self.assertEquals(rep.u.secondary_address_size, 4)
         self.assertEquals(rep.u.secondary_address, "%d" % self.tcp_port)
-        self.assertEquals(len(rep.u._pad1), 2)
-        self.assertEquals(rep.u._pad1, b'\0' * 2)
+        self.assertPadding(rep.u._pad1, 2)
         self.assertEquals(rep.u.num_results, 1)
         self.assertEquals(rep.u.ctx_list[0].result,
                           dcerpc.DCERPC_BIND_ACK_RESULT_ACCEPTANCE)
@@ -2692,9 +2649,7 @@ class TestDCERPC_BIND(RawDCERPCTest):
         self.assertEquals(rep.u.max_recv_frag, req.u.max_recv_frag)
         self.assertEquals(rep.u.assoc_group_id, req.u.assoc_group_id)
         self.assertEquals(rep.u.secondary_address_size, 0)
-        self.assertEquals(len(rep.u._pad1), 2)
-        # Windows sends garbage
-        #self.assertEquals(rep.u._pad1, '\0' * 2)
+        self.assertPadding(rep.u._pad1, 2)
         self.assertEquals(rep.u.num_results, 1)
         self.assertEquals(rep.u.ctx_list[0].result,
                           dcerpc.DCERPC_BIND_ACK_RESULT_ACCEPTANCE)
@@ -2810,8 +2765,7 @@ class TestDCERPC_BIND(RawDCERPCTest):
         self.assertNotEquals(rep.u.assoc_group_id, req.u.assoc_group_id)
         self.assertEquals(rep.u.secondary_address_size, 4)
         self.assertEquals(rep.u.secondary_address, "%d" % self.tcp_port)
-        self.assertEquals(len(rep.u._pad1), 2)
-        self.assertEquals(rep.u._pad1, b'\0' * 2)
+        self.assertPadding(rep.u._pad1, 2)
         self.assertEquals(rep.u.num_results, 1)
         self.assertEquals(rep.u.ctx_list[0].result,
                           dcerpc.DCERPC_BIND_ACK_RESULT_ACCEPTANCE)
@@ -2842,9 +2796,7 @@ class TestDCERPC_BIND(RawDCERPCTest):
         self.assertEquals(rep.u.max_recv_frag, req.u.max_recv_frag)
         self.assertEquals(rep.u.assoc_group_id, req.u.assoc_group_id)
         self.assertEquals(rep.u.secondary_address_size, 0)
-        self.assertEquals(len(rep.u._pad1), 2)
-        # Windows sends garbage
-        #self.assertEquals(rep.u._pad1, '\0' * 2)
+        self.assertPadding(rep.u._pad1, 2)
         self.assertEquals(rep.u.num_results, 1)
         self.assertEquals(rep.u.ctx_list[0].result,
                           dcerpc.DCERPC_BIND_ACK_RESULT_ACCEPTANCE)
@@ -2927,8 +2879,7 @@ class TestDCERPC_BIND(RawDCERPCTest):
         assoc_group_id = rep.u.assoc_group_id
         self.assertEquals(rep.u.secondary_address_size, 4)
         self.assertEquals(rep.u.secondary_address, "%d" % self.tcp_port)
-        self.assertEquals(len(rep.u._pad1), 2)
-        self.assertEquals(rep.u._pad1, b'\0' * 2)
+        self.assertPadding(rep.u._pad1, 2)
         self.assertEquals(rep.u.num_results, 1)
         self.assertEquals(rep.u.ctx_list[0].result,
                           dcerpc.DCERPC_BIND_ACK_RESULT_ACCEPTANCE)
@@ -3010,8 +2961,7 @@ class TestDCERPC_BIND(RawDCERPCTest):
         self.assertNotEquals(rep.u.assoc_group_id, req.u.assoc_group_id)
         self.assertEquals(rep.u.secondary_address_size, 4)
         self.assertEquals(rep.u.secondary_address, "%d" % self.tcp_port)
-        self.assertEquals(len(rep.u._pad1), 2)
-        #self.assertEquals(rep.u._pad1, '\0' * 2)
+        self.assertPadding(rep.u._pad1, 2)
         self.assertEquals(rep.u.num_results, 1)
         self.assertEquals(rep.u.ctx_list[0].result,
                           dcerpc.DCERPC_BIND_ACK_RESULT_ACCEPTANCE)
@@ -3100,8 +3050,7 @@ class TestDCERPC_BIND(RawDCERPCTest):
         self.assertNotEquals(rep.u.assoc_group_id, req.u.assoc_group_id)
         self.assertEquals(rep.u.secondary_address_size, 4)
         self.assertEquals(rep.u.secondary_address, "%d" % self.tcp_port)
-        self.assertEquals(len(rep.u._pad1), 2)
-        self.assertEquals(rep.u._pad1, b'\0' * 2)
+        self.assertPadding(rep.u._pad1, 2)


-- 
Samba Shared Repository



More information about the samba-cvs mailing list