Bug 16266 - replUpToDateVector should store last_sync_success in DSTIME format, not in FILETIME format.
Summary: replUpToDateVector should store last_sync_success in DSTIME format, not in FI...
Status: NEW
Alias: None
Product: Samba 4.1 and newer
Classification: Unclassified
Component: PIDL and libndr (show other bugs)
Version: unspecified
Hardware: All All
: P5 critical (vote)
Target Milestone: ---
Assignee: Samba QA Contact
QA Contact: Samba QA Contact
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2026-09-30 01:02 UTC by prohorp
Modified: 2026-09-30 01:02 UTC (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description prohorp 2026-09-30 01:02:05 UTC
The UPTODATE_VECTOR and UPTODATE_CURSOR RPC types are missing.
This results in the replUpToDateVector attribute storing the last_sync_success field in FILETIME format, whereas it should be stored in DSTIME.
https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-dtyp/2c57429b-fdd4-488f-b5fc-9e4cf020fcdf
https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-drsr/a72a16b9-73e4-41ca-a5c1-afc5fc54e175
https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-drsr/cf88f341-fb49-4cd5-b7e2-6920cbd91f1b
https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-drsr/d3e30021-b6ac-413e-b08a-b69b9b0c6592
https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-drsr/462b424a-b50a-4c4a-a81f-48d0f4cf40fe
https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-drsr/cebd1ccb-891b-4268-b056-4b714cdf981e

Corrections need to be made:
add definitions of structures in librpc/idl/drsuapi.idl

/* 5.202 UPTODATE_CURSOR_V1 */
	typedef [public] struct {
		GUID uuidDsa; 
		hyper usn_high_prop_update; 
	} drsuapi_uptodate_cursor_v1;

/* 5.203 UPTODATE_CURSOR_V2 */
	typedef [public] struct {
		GUID uuidDsa; 
		hyper usn_high_prop_update; 
		NTTIME_1sec time_last_sync_success;
	} drsuapi_uptodate_cursor_v2;	

/*  5.204 UPTODATE_VECTOR_V1_EXT */
	typedef struct {
		[value(1)] uint32 version;
		[value(0)] uint32 reserved1;
		[range(0,0x100000)] uint32 count;
		[value(0)] uint32 reserved2;
		[size_is(count)] drsuapi_uptodate_cursor_v1 cursors[];
	} drsuapi_uptodate_vector_v1_ext;

/*  5.205 UPTODATE_VECTOR_V2_EXT */
	typedef struct {
		[value(2)] uint32 version;
		[value(0)] uint32 reserved1;
		[range(0,0x100000)] uint32 count;
		[value(0)] uint32 reserved2;
		[size_is(count)] drsuapi_uptodate_cursor_v2 cursors[];
	} drsuapi_uptodate_vector_v2_ext;

Corrections also need to be made in librpc/idl/drsuapi.idl:
librpc/idl/drsuapi.idl:drsuapi_DsGetNCChangesRequest5 field uptodateness_vector must have a type UPTODATE_VECTOR_V1_EXT
https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-drsr/fd24b73c-7b81-43af-8c77-65bc2e3181b7

librpc/idl/drsuapi.idl:drsuapi_DsGetNCChangesRequest8 field uptodateness_vector must have a type UPTODATE_VECTOR_V1_EXT
https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-drsr/4304bb4a-e9b5-4c8a-8731-df4d6f9ab567

librpc/idl/drsuapi.idl:drsuapi_DsGetNCChangesRequest10 field uptodateness_vector must have a type UPTODATE_VECTOR_V1_EXT
https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-drsr/92b1b77d-2058-46e0-9e8c-6664b96a0cf9

librpc/idl/drsuapi.idl:drsuapi_DsGetNCChangesCtr1 field uptodateness_vector must have a type UPTODATE_VECTOR_V1_EXT
https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-drsr/bd70a9c3-c1d3-48cf-9c24-503a5567d09c

librpc/idl/drsuapi.idl:drsuapi_DsGetNCChangesCtr6 field uptodateness_vector must have a type UPTODATE_VECTOR_V2_EXT
https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-drsr/1317a654-5dd6-45ff-af73-919cbc7fbb45

librpc/idl/drsuapi.idl:drsuapi_DsReplicaInfo field udv1 must have a type UPTODATE_VECTOR_V1_EXT
https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-drsr/374665d4-0c2f-4f0c-9866-d6b0855ede60

Next, you need to make the substitutions in librpc/idl/drsblobs.idl:
in replUpToDateVectorCtr1 replace drsuapi_DsReplicaCursor with drsuapi_uptodate_cursor_v1
in replUpToDateVectorCtr2 replace drsuapi_DsReplicaCursor2 with drsuapi_uptodate_cursor_v2