]> git.ipfire.org Git - thirdparty/samba.git/log
thirdparty/samba.git
3 years agopassdb: Fix whitespace
Volker Lendecke [Tue, 24 Jan 2023 09:16:41 +0000 (10:16 +0100)] 
passdb: Fix whitespace

Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
3 years agopassdb: Fix a DBG message
Volker Lendecke [Tue, 24 Jan 2023 09:00:25 +0000 (10:00 +0100)] 
passdb: Fix a DBG message

This is not dsdb_add_domain_alias()

Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
3 years agos3: smbd: Add missing 'return;'s in exit paths in reply_exit_done().
Jeremy Allison [Fri, 11 Aug 2023 22:19:01 +0000 (15:19 -0700)] 
s3: smbd: Add missing 'return;'s in exit paths in reply_exit_done().

Remove knownfail.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=15430

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Noel Power <npower@samba.org>
Autobuild-User(master): Noel Power <npower@samba.org>
Autobuild-Date(master): Mon Aug 14 19:52:49 UTC 2023 on atb-devel-224

3 years agos3: torture: Add a test doing an SMB1 negotiate+exit.
Jeremy Allison [Fri, 11 Aug 2023 22:12:05 +0000 (15:12 -0700)] 
s3: torture: Add a test doing an SMB1 negotiate+exit.

Robert Morris <rtm@lcs.mit.edu> noticed a missing
return in reply_exit_done().

Adds knownfail.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=15430

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Noel Power <npower@samba.org>
3 years agomdssvc: Do an early talloc_free() in _mdssvc_open()
Jones Syue [Mon, 7 Aug 2023 09:08:29 +0000 (17:08 +0800)] 
mdssvc: Do an early talloc_free() in _mdssvc_open()

Environment setup:
When macOS Finder connect to a samba server with 'spotlight = yes',
macOS would issue mdssvc open (mdssvc.opnum == 0) to samba and it goes
through api _mdssvc_open().

After applied 578e434a94147dc2d7dbfc006d2ab84807859c1d,
(this is reported by jaywei@qnap.com)
this line 'talloc_free(path);' is deleted if _mdssvc_open() normal exit,
so memory is lazy de-allocate: delayed to
smbd_tevent_trace_callback() @ smb2_process.c. [1]

Supposed to explicitly free 'path' in _mdssvc_open() @ srv_mdssvc_nt.c[2]
just like abnormal exit, do not wait for main loop to free 'path' which is
no longer used, this is more consistent while reading source code.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=15449

[1] gdb tracing 'path' address 0x56204ccc67e0 to know how it is freed.
Breakpoint 2, _tc_free_children_internal (tc=0x56204ccc6780, ptr=0x56204ccc67e0, location=0x7ff430d96410 "../../lib/talloc/talloc.c:1714") at ../../lib/talloc/talloc.c:1656
1656            while (tc->child) {
(gdb) bt
0  _tc_free_children_internal (tc=0x56204ccc6780, ptr=0x56204ccc67e0, location=0x7ff430d96410 "../../lib/talloc/talloc.c:1714") at ../../lib/talloc/talloc.c:1656
1  0x00007ff430d92b14 in _tc_free_internal (tc=0x56204ccc6780, location=0x7ff430d96410 "../../lib/talloc/talloc.c:1714") at ../../lib/talloc/talloc.c:1183
2  0x00007ff430d93b71 in _tc_free_children_internal (tc=0x56204ccc6720, ptr=0x56204ccc6780, location=0x7ff430d96410 "../../lib/talloc/talloc.c:1714") at ../../lib/talloc/talloc.c:1668
3  0x00007ff430d93d66 in talloc_free_children (ptr=0x56204ccc6780) at ../../lib/talloc/talloc.c:1714
4  0x00007ff432235aca in talloc_pop (frame=0x56204ccc6780) at ../../lib/util/talloc_stack.c:125
5  0x00007ff430d92959 in _tc_free_internal (tc=0x56204ccc6720, location=0x7ff431f358d0 "../../source3/smbd/process.c:3726") at ../../lib/talloc/talloc.c:1157
6  0x00007ff430d92cd5 in _talloc_free_internal (ptr=0x56204ccc6780, location=0x7ff431f358d0 "../../source3/smbd/process.c:3726") at ../../lib/talloc/talloc.c:1247
7  0x00007ff430d93f96 in _talloc_free (ptr=0x56204ccc6780, location=0x7ff431f358d0 "../../source3/smbd/process.c:3726") at ../../lib/talloc/talloc.c:1791
8  0x00007ff431d81292 in smbd_tevent_trace_callback (point=TEVENT_TRACE_AFTER_LOOP_ONCE, private_data=0x7ffe46591e30) at ../../source3/smbd/process.c:3726
<...cut...>

[2] gdb tracing 'path' address 0x55a6d66deed0 to know how it is freed.
Breakpoint 2, _tc_free_children_internal (tc=0x55a6d66deed0, ptr=0x55a6d66def30, location=0x7fc4cca84040 "../../source3/rpc_server/mdssvc/srv_mdssvc_nt.c:189") at ../../lib/talloc/talloc.c:1656
1656            while (tc->child) {
(gdb) bt
0  _tc_free_children_internal (tc=0x55a6d66deed0, ptr=0x55a6d66def30, location=0x7fc4cca84040 "../../source3/rpc_server/mdssvc/srv_mdssvc_nt.c:189") at ../../lib/talloc/talloc.c:1656
1  0x00007fc4cb892b14 in _tc_free_internal (tc=0x55a6d66deed0, location=0x7fc4cca84040 "../../source3/rpc_server/mdssvc/srv_mdssvc_nt.c:189") at ../../lib/talloc/talloc.c:1183
2  0x00007fc4cb892cd5 in _talloc_free_internal (ptr=0x55a6d66def30, location=0x7fc4cca84040 "../../source3/rpc_server/mdssvc/srv_mdssvc_nt.c:189") at ../../lib/talloc/talloc.c:1247
3  0x00007fc4cb893f96 in _talloc_free (ptr=0x55a6d66def30, location=0x7fc4cca84040 "../../source3/rpc_server/mdssvc/srv_mdssvc_nt.c:189") at ../../lib/talloc/talloc.c:1791
4  0x00007fc4cc9396e4 in _mdssvc_open (p=0x55a6d66d5600, r=0x55a6d66edc60) at ../../source3/rpc_server/mdssvc/srv_mdssvc_nt.c:189
<...cut...>

Signed-off-by: Jones Syue <jonessyue@qnap.com>
Reviewed-by: Noel Power <npower@samba.org>
Reviewed-by: Volker Lendecke <vl@samba.org>
Autobuild-User(master): Noel Power <npower@samba.org>
Autobuild-Date(master): Mon Aug 14 18:11:37 UTC 2023 on atb-devel-224

3 years agos3: smbd: Ensure all callers to srvstr_pull_req_talloc() pass a zeroed-out dest pointer.
Jeremy Allison [Fri, 11 Aug 2023 17:52:31 +0000 (10:52 -0700)] 
s3: smbd: Ensure all callers to srvstr_pull_req_talloc() pass a zeroed-out dest pointer.

Now we've fixed srvstr_pull_req_talloc() this isn't
strictly needed, but ensuring pointers are initialized
is best practice to avoid future bugs.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=15420

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Volker Lendecke <vl@samba.org>
Autobuild-User(master): Volker Lendecke <vl@samba.org>
Autobuild-Date(master): Mon Aug 14 15:55:43 UTC 2023 on atb-devel-224

3 years agos3: smbd: Uncorrupt the pointer we were using to prove a crash.
Jeremy Allison [Fri, 11 Aug 2023 17:47:28 +0000 (10:47 -0700)] 
s3: smbd: Uncorrupt the pointer we were using to prove a crash.

Rather than restore to uninitialized, set to NULL as per
modern coding practices.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=15420
Reviewed-by: Volker Lendecke <vl@samba.org>
Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Volker Lendecke <vl@samba.org>
3 years agos3: smbd: Ensure srvstr_pull_req_talloc() always NULLs out *dest.
Jeremy Allison [Fri, 11 Aug 2023 17:42:41 +0000 (10:42 -0700)] 
s3: smbd: Ensure srvstr_pull_req_talloc() always NULLs out *dest.

Robert Morris <rtm@lcs.mit.edu> noticed that in the case
where srvstr_pull_req_talloc() is being called with
buffer remaining == 0, we don't NULL out the destination
pointed which is *always* done in the codepaths inside
pull_string_talloc(). This prevents a crash in the caller.

Remove knownfail.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=15420

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Volker Lendecke <vl@samba.org>
3 years agos3: torture: Add SMB1-TRUNCATED-SESSSETUP test.
Jeremy Allison [Fri, 11 Aug 2023 17:39:36 +0000 (10:39 -0700)] 
s3: torture: Add SMB1-TRUNCATED-SESSSETUP test.

Shows that we indirect through an uninitialized pointer and the client crashes
it's own smbd.

Add knownfail.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=15420

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Volker Lendecke <vl@samba.org>
3 years agos3: smbd: Deliberately currupt an uninitialized pointer.
Jeremy Allison [Fri, 11 Aug 2023 17:38:23 +0000 (10:38 -0700)] 
s3: smbd: Deliberately currupt an uninitialized pointer.

We will need this to show smbd crashing in the test code.
This will be removed once we're passing the test.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=15420

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Volker Lendecke <vl@samba.org>
3 years agos4:kdc: Add get_claims_set_for_principal()
Joseph Sutton [Thu, 10 Aug 2023 22:54:52 +0000 (10:54 +1200)] 
s4:kdc: Add get_claims_set_for_principal()

Add a new function, get_claims_set_for_principal(), that returns the
claims as a CLAIMS_SET structure rather than as a blob. To accommodate
this, move the call to encode_claims_set() out of get_all_claims() and
into get_claims_blob_for_principal().

Being able to get the unencoded claims will save us from having to
decode claims that we just needlessly encoded.

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Autobuild-User(master): Andrew Bartlett <abartlet@samba.org>
Autobuild-Date(master): Mon Aug 14 05:51:45 UTC 2023 on atb-devel-224

3 years agos4:kdc: Rename ‘claims_blob’ parameter to ‘claims_blob_out’
Joseph Sutton [Fri, 11 Aug 2023 00:21:16 +0000 (12:21 +1200)] 
s4:kdc: Rename ‘claims_blob’ parameter to ‘claims_blob_out’

Just to make perfectly clear that it is an out parameter.

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agos4:kdc: Rename get_claims_for_principal() to get_claims_blob_for_principal()
Joseph Sutton [Fri, 11 Aug 2023 00:20:09 +0000 (12:20 +1200)] 
s4:kdc: Rename get_claims_for_principal() to get_claims_blob_for_principal()

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agos4:kdc: Ensure that we don’t dereference a NULL pointer
Joseph Sutton [Fri, 11 Aug 2023 00:15:05 +0000 (12:15 +1200)] 
s4:kdc: Ensure that we don’t dereference a NULL pointer

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agos4:kdc: Properly allocate claims set on a talloc context
Joseph Sutton [Fri, 11 Aug 2023 00:10:46 +0000 (12:10 +1200)] 
s4:kdc: Properly allocate claims set on a talloc context

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agos4:kdc: Remove ldb_context parameter as being no longer needed
Joseph Sutton [Fri, 11 Aug 2023 00:06:00 +0000 (12:06 +1200)] 
s4:kdc: Remove ldb_context parameter as being no longer needed

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agos4:kdc: Have encode_claims_set return NTSTATUS
Joseph Sutton [Fri, 11 Aug 2023 00:04:02 +0000 (12:04 +1200)] 
s4:kdc: Have encode_claims_set return NTSTATUS

This change will simplify things later. Probably.

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agos4:dsdb: Check for overflow in security_token_create()
Joseph Sutton [Thu, 10 Aug 2023 22:36:04 +0000 (10:36 +1200)] 
s4:dsdb: Check for overflow in security_token_create()

Overflow is unlikely ever to occur, but you never know.

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agos4:dsdb: Make ‘sids’ parameter const
Joseph Sutton [Thu, 10 Aug 2023 22:35:43 +0000 (10:35 +1200)] 
s4:dsdb: Make ‘sids’ parameter const

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agos4:dsdb: Use uint32_t for ‘num_sids’
Joseph Sutton [Thu, 10 Aug 2023 22:34:47 +0000 (10:34 +1200)] 
s4:dsdb: Use uint32_t for ‘num_sids’

This matches the use of uint32_t for security_token::num_sids.

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agos4:kdc: Free error message returned by krb5_get_error_message()
Joseph Sutton [Thu, 10 Aug 2023 22:25:08 +0000 (10:25 +1200)] 
s4:kdc: Free error message returned by krb5_get_error_message()

Also check whether the message is NULL. Passing NULL to vasprintf() is
undefined behaviour.

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agos4:kdc: Use common out path in mit_samba_kpasswd_change_password()
Joseph Sutton [Thu, 10 Aug 2023 22:23:10 +0000 (10:23 +1200)] 
s4:kdc: Use common out path in mit_samba_kpasswd_change_password()

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agos4:kdc: Inline samba_get_claims_blob()
Joseph Sutton [Thu, 10 Aug 2023 22:21:07 +0000 (10:21 +1200)] 
s4:kdc: Inline samba_get_claims_blob()

Wrapping a function this simple doesn’t gain us very much.

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agos4:kdc: Don’t enforce a server authentication policy for the krbtgt
Joseph Sutton [Thu, 10 Aug 2023 22:15:56 +0000 (10:15 +1200)] 
s4:kdc: Don’t enforce a server authentication policy for the krbtgt

As the server authentication policy will be non-NULL only for entries
looked up as servers, the krbtgt shouldn’t have an authentication policy
anyway. But we might as well be explicit.

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agos4:kdc: Switch to using samdb_result_dom_sid_buf()
Joseph Sutton [Thu, 10 Aug 2023 22:13:38 +0000 (10:13 +1200)] 
s4:kdc: Switch to using samdb_result_dom_sid_buf()

This function doesn’t require a heap allocation.

We also check the result of the function, which we weren’t doing before.

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agos4:kdc: Return krb5_error_code
Joseph Sutton [Thu, 10 Aug 2023 22:08:57 +0000 (10:08 +1200)] 
s4:kdc: Return krb5_error_code

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agos4:kdc: Make some functions static
Joseph Sutton [Thu, 10 Aug 2023 22:07:55 +0000 (10:07 +1200)] 
s4:kdc: Make some functions static

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agos4:kdc: Return (possibly) more appropriate error codes
Joseph Sutton [Thu, 10 Aug 2023 22:02:28 +0000 (10:02 +1200)] 
s4:kdc: Return (possibly) more appropriate error codes

This change ultimately won’t make much difference to responses, as
unrecognized codes are mapped to ERR_GENERIC in any case. But it might
provide some help for debugging.

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agos4:auth: Check return value of talloc_new()
Joseph Sutton [Thu, 10 Aug 2023 21:57:11 +0000 (09:57 +1200)] 
s4:auth: Check return value of talloc_new()

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agos4:auth: Fix leaks
Joseph Sutton [Thu, 10 Aug 2023 21:56:55 +0000 (09:56 +1200)] 
s4:auth: Fix leaks

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agos4:auth: Add missing space to error message
Joseph Sutton [Thu, 10 Aug 2023 21:55:17 +0000 (09:55 +1200)] 
s4:auth: Add missing space to error message

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agos4:kdc: Use type bool for ‘is_tgs’
Joseph Sutton [Thu, 10 Aug 2023 21:28:31 +0000 (09:28 +1200)] 
s4:kdc: Use type bool for ‘is_tgs’

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agos4:kdc: Erase key data
Joseph Sutton [Thu, 10 Aug 2023 04:58:31 +0000 (16:58 +1200)] 
s4:kdc: Erase key data

If we’re going to zero the keys before freeing them, we might as well do
it properly.

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agos4:kdc: Ensure the value of h->len is accurate
Joseph Sutton [Thu, 10 Aug 2023 04:52:13 +0000 (16:52 +1200)] 
s4:kdc: Ensure the value of h->len is accurate

If we exited this function early due to an error, h->len would contain
the number of elements that *ought* to be in h->val, but not all of
those elements must have been initialized. Subsequently trying to free
this partially-uninitialized structure with free_Keys() could have bad
results.

Avoid this by ensuring that h->len accurately reports the actual number
of initialized elements.

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agos4:kdc: Consistently zero HDB structures
Joseph Sutton [Thu, 10 Aug 2023 04:35:52 +0000 (16:35 +1200)] 
s4:kdc: Consistently zero HDB structures

To these conversion functions we sometimes pass malloc-allocated HDB
structures, which we free afterwards if conversion fails. If parts of
these structures are still uninitialized when we try to free them, all
sorts of fun things can result.

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agos4:kdc: Fix leaks of sdb_entry’s members
Joseph Sutton [Thu, 10 Aug 2023 04:33:24 +0000 (16:33 +1200)] 
s4:kdc: Fix leaks of sdb_entry’s members

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agos4:kdc: Fail PAC checksum verification if the krbtgt entry has no keys
Joseph Sutton [Thu, 10 Aug 2023 04:31:41 +0000 (16:31 +1200)] 
s4:kdc: Fail PAC checksum verification if the krbtgt entry has no keys

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agos4:kdc: Correctly report length of KDC packet
Joseph Sutton [Thu, 10 Aug 2023 04:17:51 +0000 (16:17 +1200)] 
s4:kdc: Correctly report length of KDC packet

If the data was received over TCP, it would have had four bytes
subtracted from its length already, in kdc_tcp_call_loop().

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agos4:kdc: Use portable format specifier
Joseph Sutton [Thu, 10 Aug 2023 04:17:06 +0000 (16:17 +1200)] 
s4:kdc: Use portable format specifier

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agos4:kdc: Correct error message
Joseph Sutton [Thu, 10 Aug 2023 04:16:12 +0000 (16:16 +1200)] 
s4:kdc: Correct error message

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agos4:kdc: Return an error code if sdb_entry_to_hdb_entry() fails
Joseph Sutton [Thu, 10 Aug 2023 04:13:12 +0000 (16:13 +1200)] 
s4:kdc: Return an error code if sdb_entry_to_hdb_entry() fails

This condition was written backwards — if samba_kdc_fetch() returned
zero, we would ignore any error code returned by
sdb_entry_to_hdb_entry().

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agos4:kdc: Fix code spelling
Joseph Sutton [Thu, 10 Aug 2023 04:12:13 +0000 (16:12 +1200)] 
s4:kdc: Fix code spelling

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agos4:kdc: Fix leaks
Joseph Sutton [Thu, 10 Aug 2023 04:07:17 +0000 (16:07 +1200)] 
s4:kdc: Fix leaks

Use a temporary context to allocate these variables. Each variable that
needs to be transferred to the caller is stolen onto an appropriate
talloc context just prior to the function’s returning.

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agos4:kdc: Move calls to talloc_steal() out of the ‘out’ paths
Joseph Sutton [Thu, 10 Aug 2023 03:25:50 +0000 (15:25 +1200)] 
s4:kdc: Move calls to talloc_steal() out of the ‘out’ paths

This simplifies the ‘out’ paths.

Every code path that reaches ‘out’ via a goto ensures that ‘ret’ is set
to a nonzero value.

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agos4:kdc: Remove unnecessary talloc context
Joseph Sutton [Thu, 10 Aug 2023 03:57:43 +0000 (15:57 +1200)] 
s4:kdc: Remove unnecessary talloc context

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agos4:kdc: Call krb5_free_principal() directly after to-be-freed principal is used
Joseph Sutton [Thu, 10 Aug 2023 03:55:53 +0000 (15:55 +1200)] 
s4:kdc: Call krb5_free_principal() directly after to-be-freed principal is used

This simplifies the ‘out’ path.

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agos4:kdc: Free samba_kdc_seq context on failure to allocate memory
Joseph Sutton [Thu, 10 Aug 2023 03:54:21 +0000 (15:54 +1200)] 
s4:kdc: Free samba_kdc_seq context on failure to allocate memory

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agos4:kdc: Check return value from ldb_dn_get_linearized()
Joseph Sutton [Thu, 10 Aug 2023 03:53:23 +0000 (15:53 +1200)] 
s4:kdc: Check return value from ldb_dn_get_linearized()

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agos4:kdc: Fix leak of sdb_entry
Joseph Sutton [Thu, 10 Aug 2023 03:11:51 +0000 (15:11 +1200)] 
s4:kdc: Fix leak of sdb_entry

We should take the common ‘out’ path to ensure that we call
sdb_entry_free() on the entry.

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agos4:kdc: Ensure we don’t increase the value of entry->etypes->len
Joseph Sutton [Thu, 10 Aug 2023 02:48:04 +0000 (14:48 +1200)] 
s4:kdc: Ensure we don’t increase the value of entry->etypes->len

The value of entry->etypes->len ought to be equal to that of
entry->keys.len, and so should be nonzero. But it’s safer not to rely on
that assumption.

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agos4:kdc: Check result of samdb_result_dom_sid()
Joseph Sutton [Thu, 10 Aug 2023 02:46:34 +0000 (14:46 +1200)] 
s4:kdc: Check result of samdb_result_dom_sid()

We must not pass a NULL pointer into dom_sid_split_rid().

While we’re at it, switch to using samdb_result_dom_sid_buf(), which
doesn’t require a heap allocation.

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agos4:kdc: Initialize entry->modified_by
Joseph Sutton [Thu, 10 Aug 2023 02:37:34 +0000 (14:37 +1200)] 
s4:kdc: Initialize entry->modified_by

If smb_krb5_make_principal() fails without setting the principal,
sdb_entry_free() will try to free whatever memory the uninitialized
member points to.

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agos4:kdc: Don’t log secret keys
Joseph Sutton [Thu, 10 Aug 2023 02:27:55 +0000 (14:27 +1200)] 
s4:kdc: Don’t log secret keys

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agos4:kdc: Don’t issue forwardable or proxiable tickets to Protected Users
Joseph Sutton [Tue, 8 Aug 2023 22:47:08 +0000 (10:47 +1200)] 
s4:kdc: Don’t issue forwardable or proxiable tickets to Protected Users

If an authentication policy enforces a maximum TGT lifetime for a
Protected User, that limit should stand in place of the four-hour limit
usually applied to Protected Users; we should nevertheless continue to
ensure that forwardable or proxiable tickets are not issued to such
users.

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agotests/krb5: Test that neither forwardable nor proxiable tickets are issued to Protect...
Joseph Sutton [Tue, 8 Aug 2023 23:05:05 +0000 (11:05 +1200)] 
tests/krb5: Test that neither forwardable nor proxiable tickets are issued to Protected Users

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agotests/krb5: Allow specifying KDC options when requesting a TGT
Joseph Sutton [Thu, 10 Aug 2023 21:42:25 +0000 (09:42 +1200)] 
tests/krb5: Allow specifying KDC options when requesting a TGT

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agotests/krb5: Allow specifying additional details for a test account
Joseph Sutton [Thu, 10 Aug 2023 21:41:08 +0000 (09:41 +1200)] 
tests/krb5: Allow specifying additional details for a test account

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agotests/krb5: Split out new AuthnPolicyBaseTests class
Joseph Sutton [Thu, 10 Aug 2023 21:39:27 +0000 (09:39 +1200)] 
tests/krb5: Split out new AuthnPolicyBaseTests class

This class provides a useful base for other tests to build upon.

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agotests/krb5: Move some functions round to prepare for splitting the class
Joseph Sutton [Thu, 10 Aug 2023 21:37:32 +0000 (09:37 +1200)] 
tests/krb5: Move some functions round to prepare for splitting the class

No effective code change.

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agotests/krb5: Keep claim types for subsequent tests
Joseph Sutton [Mon, 31 Jul 2023 00:29:26 +0000 (12:29 +1200)] 
tests/krb5: Keep claim types for subsequent tests

We want to be able to reuse them across several tests.

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agotests/krb5: Rename compatability_tests class
Joseph Sutton [Tue, 18 Jul 2023 04:05:25 +0000 (16:05 +1200)] 
tests/krb5: Rename compatability_tests class

We should not have two unrelated classes both named SimpleKerberosTests.

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agotests/krb5: Allow cached=True with an assigned silo or policy
Joseph Sutton [Tue, 18 Jul 2023 03:55:10 +0000 (15:55 +1200)] 
tests/krb5: Allow cached=True with an assigned silo or policy

We might want to create an account with an assigned silo or policy in
setUp() or setUpClass() to be reused in subsequent tests.

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agos4:kdc: Refer to correct function in error messages
Joseph Sutton [Thu, 10 Aug 2023 21:33:41 +0000 (09:33 +1200)] 
s4:kdc: Refer to correct function in error messages

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agos4:torture: Fix code spelling
Joseph Sutton [Wed, 2 Aug 2023 02:52:13 +0000 (14:52 +1200)] 
s4:torture: Fix code spelling

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agos4:rpc_server: Fix code spelling
Joseph Sutton [Wed, 9 Aug 2023 04:04:03 +0000 (16:04 +1200)] 
s4:rpc_server: Fix code spelling

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agos4:kdc: Correct comments mentioning Heimdal
Joseph Sutton [Wed, 9 Aug 2023 04:13:20 +0000 (16:13 +1200)] 
s4:kdc: Correct comments mentioning Heimdal

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agos4:kdc: Remove unnecessary casts
Joseph Sutton [Wed, 9 Aug 2023 04:54:38 +0000 (16:54 +1200)] 
s4:kdc: Remove unnecessary casts

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agos4:dsdb: Access correct member of union
Joseph Sutton [Wed, 2 Aug 2023 03:32:05 +0000 (15:32 +1200)] 
s4:dsdb: Access correct member of union

Accessing the wrong member of a union invokes undefined behaviour.

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agos4:dsdb: Remove unnecessary casts
Joseph Sutton [Wed, 9 Aug 2023 04:54:24 +0000 (16:54 +1200)] 
s4:dsdb: Remove unnecessary casts

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agos4:auth: Fix code spelling
Joseph Sutton [Tue, 8 Aug 2023 00:38:39 +0000 (12:38 +1200)] 
s4:auth: Fix code spelling

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agos3:registry: Fix code spelling
Joseph Sutton [Tue, 8 Aug 2023 00:41:28 +0000 (12:41 +1200)] 
s3:registry: Fix code spelling

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agos3:lib: Use portable format specifiers
Joseph Sutton [Tue, 8 Aug 2023 22:01:33 +0000 (10:01 +1200)] 
s3:lib: Use portable format specifiers

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agolibrpc:ndr: Format sizes as ‘size_t’
Joseph Sutton [Thu, 10 Aug 2023 21:54:02 +0000 (09:54 +1200)] 
librpc:ndr: Format sizes as ‘size_t’

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agotsocket: Fix code spelling
Joseph Sutton [Wed, 9 Aug 2023 04:03:45 +0000 (16:03 +1200)] 
tsocket: Fix code spelling

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agolib/replace: Ensure that __STDC_WANT_LIB_EXT1__ is set to 1
Joseph Sutton [Thu, 10 Aug 2023 02:08:22 +0000 (14:08 +1200)] 
lib/replace: Ensure that __STDC_WANT_LIB_EXT1__ is set to 1

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agolib:krb5_wrap: Remove unnecessary cast
Joseph Sutton [Wed, 9 Aug 2023 04:51:05 +0000 (16:51 +1200)] 
lib:krb5_wrap: Remove unnecessary cast

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agoldb:ldb_sqlite3: Access correct member of union
Joseph Sutton [Wed, 2 Aug 2023 03:31:29 +0000 (15:31 +1200)] 
ldb:ldb_sqlite3: Access correct member of union

Accessing the wrong member of a union invokes undefined behaviour.

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agoldb: Fix code spelling
Joseph Sutton [Wed, 9 Aug 2023 04:03:32 +0000 (16:03 +1200)] 
ldb: Fix code spelling

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agodocs-xml: Fix code spelling
Joseph Sutton [Wed, 9 Aug 2023 04:03:12 +0000 (16:03 +1200)] 
docs-xml: Fix code spelling

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agoauth: Use portable format specifier
Joseph Sutton [Wed, 9 Aug 2023 23:29:52 +0000 (11:29 +1200)] 
auth: Use portable format specifier

Also, correctly format the value as unsigned.

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agoauth: Remove unnecessary casts
Joseph Sutton [Wed, 9 Aug 2023 04:50:44 +0000 (16:50 +1200)] 
auth: Remove unnecessary casts

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
3 years agobootstrap: Install codespell
Andreas Schneider [Wed, 22 Mar 2023 09:17:13 +0000 (10:17 +0100)] 
bootstrap: Install codespell

Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Autobuild-User(master): Andrew Bartlett <abartlet@samba.org>
Autobuild-Date(master): Mon Aug 14 04:40:03 UTC 2023 on atb-devel-224

3 years agokrb5: Increase the minimum MIT Krb5 version to 1.21
Andrew Bartlett [Tue, 18 Jul 2023 02:34:47 +0000 (14:34 +1200)] 
krb5: Increase the minimum MIT Krb5 version to 1.21

This is the version we test with in CI after the image update
in the next commit.  This addresses the issues that were
fixed in CVE-2022-37967 (KrbtgtFullPacSignature) and ensures
that Samba builds against the MIT version that allows us to
avoid that attack.

The hooks to allow these expectations to be disabled in the tests
are kept for now, to allow this to be reverted or to test
older servers.

With MIT 1.21 as the new test standard for the MIT KDC build
we update the knownfail_mit_kdc - this was required regadless
after the CI image update.

Any update to the CI image, even an unrelated one, brings in
a new MIT Krb5, version 1.21-3 in this case.  This has new
behaviour that needs to be noted in the knownfail files or
else the tests, which haven't changed, will fail and
pipelines won't pass.

(The image generated by the earlier bootstrap commit brought
in krb5-1.21-2 which was buggy with CVE-2023-39975)

Further tweaks to tests or the server should reduce the number
of knownfail entries, but this keeps the pipelines passing for now.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=15231

Signed-off-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Joseph Sutton <josephsutton@catalyst.net.nz>
3 years agoselftest: Allow MIT Krb5 1.21 to still start to fl2000dc
Andrew Bartlett [Tue, 18 Jul 2023 02:50:55 +0000 (14:50 +1200)] 
selftest: Allow MIT Krb5 1.21 to still start to fl2000dc

This is the simplest way to keep this test environment alive.

Signed-off-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Joseph Sutton <josephsutton@catalyst.net.nz>
3 years agobootstrap: Heimdal no longer requires perl-JSON
Andrew Bartlett [Mon, 17 Jul 2023 21:53:26 +0000 (09:53 +1200)] 
bootstrap: Heimdal no longer requires perl-JSON

Heimdal after lorikeet-heimdal-202307040259
(commit 33d117b8a9c11714ef709e63a005d87e34b9bfde)
includes Heimdal master commit f62e2f278437ff6c03d2d09bd628381c795bba78.

This has PR https://github.com/heimdal/heimdal/pull/1176 and no
longer requires the external JSON module, as JSON::PP is builtin.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=15394

Signed-off-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Joseph Sutton <josephsutton@catalyst.net.nz>
3 years agoWHATSNEW: Remove unusual box around 'REMOVED FEATURES'
Andrew Bartlett [Tue, 8 Aug 2023 19:37:30 +0000 (07:37 +1200)] 
WHATSNEW: Remove unusual box around 'REMOVED FEATURES'

We do not normally put the ==== above the titles, per recent practice.

Signed-off-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Joseph Sutton <josephsutton@catalyst.net.nz>
3 years agopython/samba/netcmd/domain/schemaupgrade.py: fix missing newline
Michael Tokarev [Fri, 4 Aug 2023 04:40:02 +0000 (07:40 +0300)] 
python/samba/netcmd/domain/schemaupgrade.py: fix missing newline

Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Volker Lendecke <vl@samba.org>
Autobuild-User(master): Andrew Bartlett <abartlet@samba.org>
Autobuild-Date(master): Sun Aug 13 22:54:55 UTC 2023 on atb-devel-224

3 years agos4-rpc_server/drsupai: Avoid looping with Azure AD Connect by not incrementing temp_h...
Andrew Bartlett [Wed, 26 Jul 2023 02:27:16 +0000 (14:27 +1200)] 
s4-rpc_server/drsupai: Avoid looping with Azure AD Connect by not incrementing temp_highest_usn for the NC root

We send the NC root first, as a special case for every chunk
that we send until the natural point where it belongs.

We do not bump the tmp_highest_usn in the highwatermark that
the client and server use (it is meant to be an opauqe cookie)
until the 'natural' point where the object appears, similar
to the cache for GET_ANC.

The issue is that without this, because the NC root was sorted
first in whatever chunk it appeared in but could have a 'high'
highwatermark, Azure AD Connect will send back the same
new_highwatermark->tmp_highest_usn, and due to a bug,
a zero reserved_usn, which makes Samba discard it.

The reserved_usn is now much less likely to ever be set because
the tmp_higest_usn is now always advancing.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=15401

Signed-off-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
3 years agos4-rpc_server/drsuapi: Ensure logs show DN for replicated objects, not (null)
Andrew Bartlett [Wed, 28 Jun 2023 03:57:47 +0000 (15:57 +1200)] 
s4-rpc_server/drsuapi: Ensure logs show DN for replicated objects, not (null)

BUG: https://bugzilla.samba.org/show_bug.cgi?id=15407
BUG: https://bugzilla.samba.org/show_bug.cgi?id=15401

Signed-off-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
3 years agos4-rpc_server/drsuapi: Update getnc_state to be != NULL
Andrew Bartlett [Tue, 27 Jun 2023 05:01:28 +0000 (17:01 +1200)] 
s4-rpc_server/drsuapi: Update getnc_state to be != NULL

This is closer to our READDME.Coding style

BUG: https://bugzilla.samba.org/show_bug.cgi?id=15401

Signed-off-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
3 years agos4-rpc_server/drsuapi: Rename ncRoot -> untrusted_ncRoot to avoid misuse
Andrew Bartlett [Tue, 27 Jun 2023 02:43:39 +0000 (14:43 +1200)] 
s4-rpc_server/drsuapi: Rename ncRoot -> untrusted_ncRoot to avoid misuse

Because of the requirement to echo back the original string, we can
not force this to be a trustworthy value.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=15401

Signed-off-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
3 years agos4-rpc_server/drsuapi: Avoid modification to ncRoot input variable in GetNCChanges
Andrew Bartlett [Tue, 27 Jun 2023 02:39:18 +0000 (14:39 +1200)] 
s4-rpc_server/drsuapi: Avoid modification to ncRoot input variable in GetNCChanges

This tries to avoid it appearing that ncRoot is a value that can
be trusted and used internally by not updating it and instead leaving
it just as an input/echo-back value.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=15401

Signed-off-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
3 years agos4-rpc_server/drsuapi: Fix indentation in GetNCChanges()
Andrew Bartlett [Tue, 27 Jun 2023 05:06:13 +0000 (17:06 +1200)] 
s4-rpc_server/drsuapi: Fix indentation in GetNCChanges()

This avoids the indentation correction being in the previous patch.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=15401

Signed-off-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
3 years agos4-rpc_server/drsuapi: Only keep and invalidate replication cycle state for normal...
Andrew Bartlett [Mon, 26 Jun 2023 04:53:10 +0000 (16:53 +1200)] 
s4-rpc_server/drsuapi: Only keep and invalidate replication cycle state for normal replication

This changes the GetNCChanges server to use a per-call state for
extended operations like RID_ALLOC or REPL_OBJ and only maintain
and (more importantly) invalidate the state during normal replication.

This allows REPL_OBJ to be called during a normal replication cycle
that continues using after that call, continuing with the same
highwatermark cookie.

Azure AD will do a sequence of (roughly)

* Normal replication (objects 1..100)
* REPL_OBJ (of 1 object)
* Normal replication (objects 101..200)

However, if there are more than 100 (in this example) objects in the
domain, and the second replication is required, the objects 1..100
are sent, as the replication state was invalidated by the REPL_OBJ call.

RN: Improve GetNChanges to address some (but not all "Azure AD Connect")
syncronisation tool looping during the initial user sync phase.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=15401

Signed-off-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
3 years agos4-torture/drs: Add test showing that if present in the set the NC root leads and...
Andrew Bartlett [Mon, 24 Jul 2023 00:05:18 +0000 (12:05 +1200)] 
s4-torture/drs: Add test showing that if present in the set the NC root leads and tmp_highest_usn moves

The NC root, on any replication when it appears, is the first object to be
replicated, including for all subsequent chunks in the replication.

However the tmp_highest_usn is not updated by that USN, it must
only be updated for the non-NC changes (to match Windows exactly),
or at least only updated with the non-NC changes until it would
naturally appear.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=15401

Signed-off-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
3 years agos4-torture/drs: Add test demonstrating that a GetNCChanges REPL_OBJ will not reset...
Andrew Bartlett [Mon, 26 Jun 2023 04:25:32 +0000 (16:25 +1200)] 
s4-torture/drs: Add test demonstrating that a GetNCChanges REPL_OBJ will not reset the replication cookie

This demonstrates the behaviour used by the "Azure AD Connect" cloud sync tool.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=15401

Signed-off-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
3 years agos4-torture/drs: Add a test matching Azure AD Connect REPL_OBJ behaviour
Andrew Bartlett [Tue, 27 Jun 2023 00:20:32 +0000 (12:20 +1200)] 
s4-torture/drs: Add a test matching Azure AD Connect REPL_OBJ behaviour

Azure AD Connect will send a GUID but no DummyDN.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=15401

Signed-off-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
3 years agos4-torture/drs: Use addCleanup() in getchanges.py for OU handling
Andrew Bartlett [Sun, 23 Jul 2023 23:37:19 +0000 (11:37 +1200)] 
s4-torture/drs: Use addCleanup() in getchanges.py for OU handling

BUG: https://bugzilla.samba.org/show_bug.cgi?id=15401

Signed-off-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
3 years agos4-torture/drs: Create temp OU with a unique name per test
Andrew Bartlett [Sun, 23 Jul 2023 23:36:36 +0000 (11:36 +1200)] 
s4-torture/drs: Create temp OU with a unique name per test

It is always better to keep the testing OUs unique if possible.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=15401

Signed-off-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
3 years agos4-torture/drs: Save the server dnsname on the DcConnection object
Andrew Bartlett [Sun, 23 Jul 2023 23:40:46 +0000 (11:40 +1200)] 
s4-torture/drs: Save the server dnsname on the DcConnection object

This object is used to hold one of many possible connections and
it is helpful for debugging and uniqueness to know which DC is being
connected to.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=15401

Signed-off-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>