mirror of
https://github.com/samba-team/samba.git
synced 2024-12-22 13:34:15 +03:00
selftest: Add test of NDR marshalling from python, starting with wbint
These patches are to address an issue unpacking a very large winbind.wbint_Principals array (100,000). We need the NDR_TOKEN_MAX_LIST_SIZE value exposed as otherwise a well-meaning incrase of this value would invalidate the test. BUG: https://bugzilla.samba.org/show_bug.cgi?id=14710 Signed-off-by: Andrew Bartlett <abartlet@samba.org> Reviewed-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
This commit is contained in:
parent
e583140e81
commit
0cc4478070
266
librpc/ABI/ndr-2.0.0.sigs
Normal file
266
librpc/ABI/ndr-2.0.0.sigs
Normal file
@ -0,0 +1,266 @@
|
|||||||
|
GUID_all_zero: bool (const struct GUID *)
|
||||||
|
GUID_buf_string: char *(const struct GUID *, struct GUID_txt_buf *)
|
||||||
|
GUID_compare: int (const struct GUID *, const struct GUID *)
|
||||||
|
GUID_equal: bool (const struct GUID *, const struct GUID *)
|
||||||
|
GUID_from_data_blob: NTSTATUS (const DATA_BLOB *, struct GUID *)
|
||||||
|
GUID_from_ndr_blob: NTSTATUS (const DATA_BLOB *, struct GUID *)
|
||||||
|
GUID_from_string: NTSTATUS (const char *, struct GUID *)
|
||||||
|
GUID_hexstring: char *(TALLOC_CTX *, const struct GUID *)
|
||||||
|
GUID_random: struct GUID (void)
|
||||||
|
GUID_string: char *(TALLOC_CTX *, const struct GUID *)
|
||||||
|
GUID_string2: char *(TALLOC_CTX *, const struct GUID *)
|
||||||
|
GUID_to_ndr_blob: NTSTATUS (const struct GUID *, TALLOC_CTX *, DATA_BLOB *)
|
||||||
|
GUID_to_ndr_buf: NTSTATUS (const struct GUID *, struct GUID_ndr_buf *)
|
||||||
|
GUID_zero: struct GUID (void)
|
||||||
|
_ndr_pull_error: enum ndr_err_code (struct ndr_pull *, enum ndr_err_code, const char *, const char *, const char *, ...)
|
||||||
|
_ndr_push_error: enum ndr_err_code (struct ndr_push *, enum ndr_err_code, const char *, const char *, const char *, ...)
|
||||||
|
ndr_align_size: size_t (uint32_t, size_t)
|
||||||
|
ndr_charset_length: uint32_t (const void *, charset_t)
|
||||||
|
ndr_check_array_length: enum ndr_err_code (struct ndr_pull *, void *, uint32_t)
|
||||||
|
ndr_check_array_size: enum ndr_err_code (struct ndr_pull *, void *, uint32_t)
|
||||||
|
ndr_check_padding: void (struct ndr_pull *, size_t)
|
||||||
|
ndr_check_pipe_chunk_trailer: enum ndr_err_code (struct ndr_pull *, int, uint32_t)
|
||||||
|
ndr_check_string_terminator: enum ndr_err_code (struct ndr_pull *, uint32_t, uint32_t)
|
||||||
|
ndr_get_array_length: uint32_t (struct ndr_pull *, const void *)
|
||||||
|
ndr_get_array_size: uint32_t (struct ndr_pull *, const void *)
|
||||||
|
ndr_map_error2errno: int (enum ndr_err_code)
|
||||||
|
ndr_map_error2ntstatus: NTSTATUS (enum ndr_err_code)
|
||||||
|
ndr_map_error2string: const char *(enum ndr_err_code)
|
||||||
|
ndr_policy_handle_empty: bool (const struct policy_handle *)
|
||||||
|
ndr_policy_handle_equal: bool (const struct policy_handle *, const struct policy_handle *)
|
||||||
|
ndr_print_DATA_BLOB: void (struct ndr_print *, const char *, DATA_BLOB)
|
||||||
|
ndr_print_GUID: void (struct ndr_print *, const char *, const struct GUID *)
|
||||||
|
ndr_print_HRESULT: void (struct ndr_print *, const char *, HRESULT)
|
||||||
|
ndr_print_KRB5_EDATA_NTSTATUS: void (struct ndr_print *, const char *, const struct KRB5_EDATA_NTSTATUS *)
|
||||||
|
ndr_print_NTSTATUS: void (struct ndr_print *, const char *, NTSTATUS)
|
||||||
|
ndr_print_NTTIME: void (struct ndr_print *, const char *, NTTIME)
|
||||||
|
ndr_print_NTTIME_1sec: void (struct ndr_print *, const char *, NTTIME)
|
||||||
|
ndr_print_NTTIME_hyper: void (struct ndr_print *, const char *, NTTIME)
|
||||||
|
ndr_print_WERROR: void (struct ndr_print *, const char *, WERROR)
|
||||||
|
ndr_print_array_uint8: void (struct ndr_print *, const char *, const uint8_t *, uint32_t)
|
||||||
|
ndr_print_bad_level: void (struct ndr_print *, const char *, uint16_t)
|
||||||
|
ndr_print_bitmap_flag: void (struct ndr_print *, size_t, const char *, uint32_t, uint32_t)
|
||||||
|
ndr_print_bool: void (struct ndr_print *, const char *, const bool)
|
||||||
|
ndr_print_debug: void (ndr_print_fn_t, const char *, void *)
|
||||||
|
ndr_print_debug_helper: void (struct ndr_print *, const char *, ...)
|
||||||
|
ndr_print_debugc: void (int, ndr_print_fn_t, const char *, void *)
|
||||||
|
ndr_print_debugc_helper: void (struct ndr_print *, const char *, ...)
|
||||||
|
ndr_print_dlong: void (struct ndr_print *, const char *, int64_t)
|
||||||
|
ndr_print_double: void (struct ndr_print *, const char *, double)
|
||||||
|
ndr_print_enum: void (struct ndr_print *, const char *, const char *, const char *, uint32_t)
|
||||||
|
ndr_print_function_debug: void (ndr_print_function_t, const char *, int, void *)
|
||||||
|
ndr_print_function_string: char *(TALLOC_CTX *, ndr_print_function_t, const char *, int, void *)
|
||||||
|
ndr_print_gid_t: void (struct ndr_print *, const char *, gid_t)
|
||||||
|
ndr_print_hyper: void (struct ndr_print *, const char *, uint64_t)
|
||||||
|
ndr_print_int16: void (struct ndr_print *, const char *, int16_t)
|
||||||
|
ndr_print_int32: void (struct ndr_print *, const char *, int32_t)
|
||||||
|
ndr_print_int3264: void (struct ndr_print *, const char *, int32_t)
|
||||||
|
ndr_print_int8: void (struct ndr_print *, const char *, int8_t)
|
||||||
|
ndr_print_ipv4address: void (struct ndr_print *, const char *, const char *)
|
||||||
|
ndr_print_ipv6address: void (struct ndr_print *, const char *, const char *)
|
||||||
|
ndr_print_ndr_syntax_id: void (struct ndr_print *, const char *, const struct ndr_syntax_id *)
|
||||||
|
ndr_print_netr_SamDatabaseID: void (struct ndr_print *, const char *, enum netr_SamDatabaseID)
|
||||||
|
ndr_print_netr_SchannelType: void (struct ndr_print *, const char *, enum netr_SchannelType)
|
||||||
|
ndr_print_null: void (struct ndr_print *)
|
||||||
|
ndr_print_pointer: void (struct ndr_print *, const char *, void *)
|
||||||
|
ndr_print_policy_handle: void (struct ndr_print *, const char *, const struct policy_handle *)
|
||||||
|
ndr_print_printf_helper: void (struct ndr_print *, const char *, ...)
|
||||||
|
ndr_print_ptr: void (struct ndr_print *, const char *, const void *)
|
||||||
|
ndr_print_set_switch_value: enum ndr_err_code (struct ndr_print *, const void *, uint32_t)
|
||||||
|
ndr_print_sockaddr_storage: void (struct ndr_print *, const char *, const struct sockaddr_storage *)
|
||||||
|
ndr_print_steal_switch_value: uint32_t (struct ndr_print *, const void *)
|
||||||
|
ndr_print_string: void (struct ndr_print *, const char *, const char *)
|
||||||
|
ndr_print_string_array: void (struct ndr_print *, const char *, const char **)
|
||||||
|
ndr_print_string_helper: void (struct ndr_print *, const char *, ...)
|
||||||
|
ndr_print_struct: void (struct ndr_print *, const char *, const char *)
|
||||||
|
ndr_print_struct_string: char *(TALLOC_CTX *, ndr_print_fn_t, const char *, void *)
|
||||||
|
ndr_print_svcctl_ServerType: void (struct ndr_print *, const char *, uint32_t)
|
||||||
|
ndr_print_time_t: void (struct ndr_print *, const char *, time_t)
|
||||||
|
ndr_print_timespec: void (struct ndr_print *, const char *, const struct timespec *)
|
||||||
|
ndr_print_timeval: void (struct ndr_print *, const char *, const struct timeval *)
|
||||||
|
ndr_print_udlong: void (struct ndr_print *, const char *, uint64_t)
|
||||||
|
ndr_print_udlongr: void (struct ndr_print *, const char *, uint64_t)
|
||||||
|
ndr_print_uid_t: void (struct ndr_print *, const char *, uid_t)
|
||||||
|
ndr_print_uint16: void (struct ndr_print *, const char *, uint16_t)
|
||||||
|
ndr_print_uint32: void (struct ndr_print *, const char *, uint32_t)
|
||||||
|
ndr_print_uint3264: void (struct ndr_print *, const char *, uint32_t)
|
||||||
|
ndr_print_uint8: void (struct ndr_print *, const char *, uint8_t)
|
||||||
|
ndr_print_union: void (struct ndr_print *, const char *, int, const char *)
|
||||||
|
ndr_print_union_debug: void (ndr_print_fn_t, const char *, uint32_t, void *)
|
||||||
|
ndr_print_union_string: char *(TALLOC_CTX *, ndr_print_fn_t, const char *, uint32_t, void *)
|
||||||
|
ndr_print_winreg_Data: void (struct ndr_print *, const char *, const union winreg_Data *)
|
||||||
|
ndr_print_winreg_Data_GPO: void (struct ndr_print *, const char *, const union winreg_Data_GPO *)
|
||||||
|
ndr_print_winreg_Type: void (struct ndr_print *, const char *, enum winreg_Type)
|
||||||
|
ndr_pull_DATA_BLOB: enum ndr_err_code (struct ndr_pull *, int, DATA_BLOB *)
|
||||||
|
ndr_pull_GUID: enum ndr_err_code (struct ndr_pull *, int, struct GUID *)
|
||||||
|
ndr_pull_HRESULT: enum ndr_err_code (struct ndr_pull *, int, HRESULT *)
|
||||||
|
ndr_pull_KRB5_EDATA_NTSTATUS: enum ndr_err_code (struct ndr_pull *, int, struct KRB5_EDATA_NTSTATUS *)
|
||||||
|
ndr_pull_NTSTATUS: enum ndr_err_code (struct ndr_pull *, int, NTSTATUS *)
|
||||||
|
ndr_pull_NTTIME: enum ndr_err_code (struct ndr_pull *, int, NTTIME *)
|
||||||
|
ndr_pull_NTTIME_1sec: enum ndr_err_code (struct ndr_pull *, int, NTTIME *)
|
||||||
|
ndr_pull_NTTIME_hyper: enum ndr_err_code (struct ndr_pull *, int, NTTIME *)
|
||||||
|
ndr_pull_WERROR: enum ndr_err_code (struct ndr_pull *, int, WERROR *)
|
||||||
|
ndr_pull_advance: enum ndr_err_code (struct ndr_pull *, uint32_t)
|
||||||
|
ndr_pull_align: enum ndr_err_code (struct ndr_pull *, size_t)
|
||||||
|
ndr_pull_append: enum ndr_err_code (struct ndr_pull *, DATA_BLOB *)
|
||||||
|
ndr_pull_array_length: enum ndr_err_code (struct ndr_pull *, const void *)
|
||||||
|
ndr_pull_array_size: enum ndr_err_code (struct ndr_pull *, const void *)
|
||||||
|
ndr_pull_array_uint8: enum ndr_err_code (struct ndr_pull *, int, uint8_t *, uint32_t)
|
||||||
|
ndr_pull_bytes: enum ndr_err_code (struct ndr_pull *, uint8_t *, uint32_t)
|
||||||
|
ndr_pull_charset: enum ndr_err_code (struct ndr_pull *, int, const char **, uint32_t, uint8_t, charset_t)
|
||||||
|
ndr_pull_charset_to_null: enum ndr_err_code (struct ndr_pull *, int, const char **, uint32_t, uint8_t, charset_t)
|
||||||
|
ndr_pull_dlong: enum ndr_err_code (struct ndr_pull *, int, int64_t *)
|
||||||
|
ndr_pull_double: enum ndr_err_code (struct ndr_pull *, int, double *)
|
||||||
|
ndr_pull_enum_uint16: enum ndr_err_code (struct ndr_pull *, int, uint16_t *)
|
||||||
|
ndr_pull_enum_uint1632: enum ndr_err_code (struct ndr_pull *, int, uint16_t *)
|
||||||
|
ndr_pull_enum_uint32: enum ndr_err_code (struct ndr_pull *, int, uint32_t *)
|
||||||
|
ndr_pull_enum_uint8: enum ndr_err_code (struct ndr_pull *, int, uint8_t *)
|
||||||
|
ndr_pull_generic_ptr: enum ndr_err_code (struct ndr_pull *, uint32_t *)
|
||||||
|
ndr_pull_get_relative_base_offset: uint32_t (struct ndr_pull *)
|
||||||
|
ndr_pull_gid_t: enum ndr_err_code (struct ndr_pull *, int, gid_t *)
|
||||||
|
ndr_pull_hyper: enum ndr_err_code (struct ndr_pull *, int, uint64_t *)
|
||||||
|
ndr_pull_init_blob: struct ndr_pull *(const DATA_BLOB *, TALLOC_CTX *)
|
||||||
|
ndr_pull_int16: enum ndr_err_code (struct ndr_pull *, int, int16_t *)
|
||||||
|
ndr_pull_int32: enum ndr_err_code (struct ndr_pull *, int, int32_t *)
|
||||||
|
ndr_pull_int8: enum ndr_err_code (struct ndr_pull *, int, int8_t *)
|
||||||
|
ndr_pull_ipv4address: enum ndr_err_code (struct ndr_pull *, int, const char **)
|
||||||
|
ndr_pull_ipv6address: enum ndr_err_code (struct ndr_pull *, int, const char **)
|
||||||
|
ndr_pull_ndr_syntax_id: enum ndr_err_code (struct ndr_pull *, int, struct ndr_syntax_id *)
|
||||||
|
ndr_pull_netr_SamDatabaseID: enum ndr_err_code (struct ndr_pull *, int, enum netr_SamDatabaseID *)
|
||||||
|
ndr_pull_netr_SchannelType: enum ndr_err_code (struct ndr_pull *, int, enum netr_SchannelType *)
|
||||||
|
ndr_pull_pointer: enum ndr_err_code (struct ndr_pull *, int, void **)
|
||||||
|
ndr_pull_policy_handle: enum ndr_err_code (struct ndr_pull *, int, struct policy_handle *)
|
||||||
|
ndr_pull_pop: enum ndr_err_code (struct ndr_pull *)
|
||||||
|
ndr_pull_ref_ptr: enum ndr_err_code (struct ndr_pull *, uint32_t *)
|
||||||
|
ndr_pull_relative_ptr1: enum ndr_err_code (struct ndr_pull *, const void *, uint32_t)
|
||||||
|
ndr_pull_relative_ptr2: enum ndr_err_code (struct ndr_pull *, const void *)
|
||||||
|
ndr_pull_relative_ptr_short: enum ndr_err_code (struct ndr_pull *, uint16_t *)
|
||||||
|
ndr_pull_restore_relative_base_offset: void (struct ndr_pull *, uint32_t)
|
||||||
|
ndr_pull_set_switch_value: enum ndr_err_code (struct ndr_pull *, const void *, uint32_t)
|
||||||
|
ndr_pull_setup_relative_base_offset1: enum ndr_err_code (struct ndr_pull *, const void *, uint32_t)
|
||||||
|
ndr_pull_setup_relative_base_offset2: enum ndr_err_code (struct ndr_pull *, const void *)
|
||||||
|
ndr_pull_steal_switch_value: enum ndr_err_code (struct ndr_pull *, const void *, uint32_t *)
|
||||||
|
ndr_pull_string: enum ndr_err_code (struct ndr_pull *, int, const char **)
|
||||||
|
ndr_pull_string_array: enum ndr_err_code (struct ndr_pull *, int, const char ***)
|
||||||
|
ndr_pull_struct_blob: enum ndr_err_code (const DATA_BLOB *, TALLOC_CTX *, void *, ndr_pull_flags_fn_t)
|
||||||
|
ndr_pull_struct_blob_all: enum ndr_err_code (const DATA_BLOB *, TALLOC_CTX *, void *, ndr_pull_flags_fn_t)
|
||||||
|
ndr_pull_struct_blob_all_noalloc: enum ndr_err_code (const DATA_BLOB *, void *, ndr_pull_flags_fn_t)
|
||||||
|
ndr_pull_subcontext_end: enum ndr_err_code (struct ndr_pull *, struct ndr_pull *, size_t, ssize_t)
|
||||||
|
ndr_pull_subcontext_start: enum ndr_err_code (struct ndr_pull *, struct ndr_pull **, size_t, ssize_t)
|
||||||
|
ndr_pull_svcctl_ServerType: enum ndr_err_code (struct ndr_pull *, int, uint32_t *)
|
||||||
|
ndr_pull_time_t: enum ndr_err_code (struct ndr_pull *, int, time_t *)
|
||||||
|
ndr_pull_timespec: enum ndr_err_code (struct ndr_pull *, int, struct timespec *)
|
||||||
|
ndr_pull_timeval: enum ndr_err_code (struct ndr_pull *, int, struct timeval *)
|
||||||
|
ndr_pull_trailer_align: enum ndr_err_code (struct ndr_pull *, size_t)
|
||||||
|
ndr_pull_udlong: enum ndr_err_code (struct ndr_pull *, int, uint64_t *)
|
||||||
|
ndr_pull_udlongr: enum ndr_err_code (struct ndr_pull *, int, uint64_t *)
|
||||||
|
ndr_pull_uid_t: enum ndr_err_code (struct ndr_pull *, int, uid_t *)
|
||||||
|
ndr_pull_uint16: enum ndr_err_code (struct ndr_pull *, int, uint16_t *)
|
||||||
|
ndr_pull_uint1632: enum ndr_err_code (struct ndr_pull *, int, uint16_t *)
|
||||||
|
ndr_pull_uint32: enum ndr_err_code (struct ndr_pull *, int, uint32_t *)
|
||||||
|
ndr_pull_uint3264: enum ndr_err_code (struct ndr_pull *, int, uint32_t *)
|
||||||
|
ndr_pull_uint8: enum ndr_err_code (struct ndr_pull *, int, uint8_t *)
|
||||||
|
ndr_pull_union_align: enum ndr_err_code (struct ndr_pull *, size_t)
|
||||||
|
ndr_pull_union_blob: enum ndr_err_code (const DATA_BLOB *, TALLOC_CTX *, void *, uint32_t, ndr_pull_flags_fn_t)
|
||||||
|
ndr_pull_union_blob_all: enum ndr_err_code (const DATA_BLOB *, TALLOC_CTX *, void *, uint32_t, ndr_pull_flags_fn_t)
|
||||||
|
ndr_pull_winreg_Data: enum ndr_err_code (struct ndr_pull *, int, union winreg_Data *)
|
||||||
|
ndr_pull_winreg_Data_GPO: enum ndr_err_code (struct ndr_pull *, int, union winreg_Data_GPO *)
|
||||||
|
ndr_pull_winreg_Type: enum ndr_err_code (struct ndr_pull *, int, enum winreg_Type *)
|
||||||
|
ndr_push_DATA_BLOB: enum ndr_err_code (struct ndr_push *, int, DATA_BLOB)
|
||||||
|
ndr_push_GUID: enum ndr_err_code (struct ndr_push *, int, const struct GUID *)
|
||||||
|
ndr_push_HRESULT: enum ndr_err_code (struct ndr_push *, int, HRESULT)
|
||||||
|
ndr_push_KRB5_EDATA_NTSTATUS: enum ndr_err_code (struct ndr_push *, int, const struct KRB5_EDATA_NTSTATUS *)
|
||||||
|
ndr_push_NTSTATUS: enum ndr_err_code (struct ndr_push *, int, NTSTATUS)
|
||||||
|
ndr_push_NTTIME: enum ndr_err_code (struct ndr_push *, int, NTTIME)
|
||||||
|
ndr_push_NTTIME_1sec: enum ndr_err_code (struct ndr_push *, int, NTTIME)
|
||||||
|
ndr_push_NTTIME_hyper: enum ndr_err_code (struct ndr_push *, int, NTTIME)
|
||||||
|
ndr_push_WERROR: enum ndr_err_code (struct ndr_push *, int, WERROR)
|
||||||
|
ndr_push_align: enum ndr_err_code (struct ndr_push *, size_t)
|
||||||
|
ndr_push_array_uint8: enum ndr_err_code (struct ndr_push *, int, const uint8_t *, uint32_t)
|
||||||
|
ndr_push_blob: DATA_BLOB (struct ndr_push *)
|
||||||
|
ndr_push_bytes: enum ndr_err_code (struct ndr_push *, const uint8_t *, uint32_t)
|
||||||
|
ndr_push_charset: enum ndr_err_code (struct ndr_push *, int, const char *, uint32_t, uint8_t, charset_t)
|
||||||
|
ndr_push_charset_to_null: enum ndr_err_code (struct ndr_push *, int, const char *, uint32_t, uint8_t, charset_t)
|
||||||
|
ndr_push_dlong: enum ndr_err_code (struct ndr_push *, int, int64_t)
|
||||||
|
ndr_push_double: enum ndr_err_code (struct ndr_push *, int, double)
|
||||||
|
ndr_push_enum_uint16: enum ndr_err_code (struct ndr_push *, int, uint16_t)
|
||||||
|
ndr_push_enum_uint1632: enum ndr_err_code (struct ndr_push *, int, uint16_t)
|
||||||
|
ndr_push_enum_uint32: enum ndr_err_code (struct ndr_push *, int, uint32_t)
|
||||||
|
ndr_push_enum_uint8: enum ndr_err_code (struct ndr_push *, int, uint8_t)
|
||||||
|
ndr_push_expand: enum ndr_err_code (struct ndr_push *, uint32_t)
|
||||||
|
ndr_push_full_ptr: enum ndr_err_code (struct ndr_push *, const void *)
|
||||||
|
ndr_push_get_relative_base_offset: uint32_t (struct ndr_push *)
|
||||||
|
ndr_push_gid_t: enum ndr_err_code (struct ndr_push *, int, gid_t)
|
||||||
|
ndr_push_hyper: enum ndr_err_code (struct ndr_push *, int, uint64_t)
|
||||||
|
ndr_push_init_ctx: struct ndr_push *(TALLOC_CTX *)
|
||||||
|
ndr_push_int16: enum ndr_err_code (struct ndr_push *, int, int16_t)
|
||||||
|
ndr_push_int32: enum ndr_err_code (struct ndr_push *, int, int32_t)
|
||||||
|
ndr_push_int8: enum ndr_err_code (struct ndr_push *, int, int8_t)
|
||||||
|
ndr_push_ipv4address: enum ndr_err_code (struct ndr_push *, int, const char *)
|
||||||
|
ndr_push_ipv6address: enum ndr_err_code (struct ndr_push *, int, const char *)
|
||||||
|
ndr_push_ndr_syntax_id: enum ndr_err_code (struct ndr_push *, int, const struct ndr_syntax_id *)
|
||||||
|
ndr_push_netr_SamDatabaseID: enum ndr_err_code (struct ndr_push *, int, enum netr_SamDatabaseID)
|
||||||
|
ndr_push_netr_SchannelType: enum ndr_err_code (struct ndr_push *, int, enum netr_SchannelType)
|
||||||
|
ndr_push_pipe_chunk_trailer: enum ndr_err_code (struct ndr_push *, int, uint32_t)
|
||||||
|
ndr_push_pointer: enum ndr_err_code (struct ndr_push *, int, void *)
|
||||||
|
ndr_push_policy_handle: enum ndr_err_code (struct ndr_push *, int, const struct policy_handle *)
|
||||||
|
ndr_push_ref_ptr: enum ndr_err_code (struct ndr_push *)
|
||||||
|
ndr_push_relative_ptr1: enum ndr_err_code (struct ndr_push *, const void *)
|
||||||
|
ndr_push_relative_ptr2_end: enum ndr_err_code (struct ndr_push *, const void *)
|
||||||
|
ndr_push_relative_ptr2_start: enum ndr_err_code (struct ndr_push *, const void *)
|
||||||
|
ndr_push_restore_relative_base_offset: void (struct ndr_push *, uint32_t)
|
||||||
|
ndr_push_set_switch_value: enum ndr_err_code (struct ndr_push *, const void *, uint32_t)
|
||||||
|
ndr_push_setup_relative_base_offset1: enum ndr_err_code (struct ndr_push *, const void *, uint32_t)
|
||||||
|
ndr_push_setup_relative_base_offset2: enum ndr_err_code (struct ndr_push *, const void *)
|
||||||
|
ndr_push_short_relative_ptr1: enum ndr_err_code (struct ndr_push *, const void *)
|
||||||
|
ndr_push_short_relative_ptr2: enum ndr_err_code (struct ndr_push *, const void *)
|
||||||
|
ndr_push_steal_switch_value: enum ndr_err_code (struct ndr_push *, const void *, uint32_t *)
|
||||||
|
ndr_push_string: enum ndr_err_code (struct ndr_push *, int, const char *)
|
||||||
|
ndr_push_string_array: enum ndr_err_code (struct ndr_push *, int, const char **)
|
||||||
|
ndr_push_struct_blob: enum ndr_err_code (DATA_BLOB *, TALLOC_CTX *, const void *, ndr_push_flags_fn_t)
|
||||||
|
ndr_push_struct_into_fixed_blob: enum ndr_err_code (DATA_BLOB *, const void *, ndr_push_flags_fn_t)
|
||||||
|
ndr_push_subcontext_end: enum ndr_err_code (struct ndr_push *, struct ndr_push *, size_t, ssize_t)
|
||||||
|
ndr_push_subcontext_start: enum ndr_err_code (struct ndr_push *, struct ndr_push **, size_t, ssize_t)
|
||||||
|
ndr_push_svcctl_ServerType: enum ndr_err_code (struct ndr_push *, int, uint32_t)
|
||||||
|
ndr_push_time_t: enum ndr_err_code (struct ndr_push *, int, time_t)
|
||||||
|
ndr_push_timespec: enum ndr_err_code (struct ndr_push *, int, const struct timespec *)
|
||||||
|
ndr_push_timeval: enum ndr_err_code (struct ndr_push *, int, const struct timeval *)
|
||||||
|
ndr_push_trailer_align: enum ndr_err_code (struct ndr_push *, size_t)
|
||||||
|
ndr_push_udlong: enum ndr_err_code (struct ndr_push *, int, uint64_t)
|
||||||
|
ndr_push_udlongr: enum ndr_err_code (struct ndr_push *, int, uint64_t)
|
||||||
|
ndr_push_uid_t: enum ndr_err_code (struct ndr_push *, int, uid_t)
|
||||||
|
ndr_push_uint16: enum ndr_err_code (struct ndr_push *, int, uint16_t)
|
||||||
|
ndr_push_uint1632: enum ndr_err_code (struct ndr_push *, int, uint16_t)
|
||||||
|
ndr_push_uint32: enum ndr_err_code (struct ndr_push *, int, uint32_t)
|
||||||
|
ndr_push_uint3264: enum ndr_err_code (struct ndr_push *, int, uint32_t)
|
||||||
|
ndr_push_uint8: enum ndr_err_code (struct ndr_push *, int, uint8_t)
|
||||||
|
ndr_push_union_align: enum ndr_err_code (struct ndr_push *, size_t)
|
||||||
|
ndr_push_union_blob: enum ndr_err_code (DATA_BLOB *, TALLOC_CTX *, void *, uint32_t, ndr_push_flags_fn_t)
|
||||||
|
ndr_push_unique_ptr: enum ndr_err_code (struct ndr_push *, const void *)
|
||||||
|
ndr_push_winreg_Data: enum ndr_err_code (struct ndr_push *, int, const union winreg_Data *)
|
||||||
|
ndr_push_winreg_Data_GPO: enum ndr_err_code (struct ndr_push *, int, const union winreg_Data_GPO *)
|
||||||
|
ndr_push_winreg_Type: enum ndr_err_code (struct ndr_push *, int, enum winreg_Type)
|
||||||
|
ndr_push_zero: enum ndr_err_code (struct ndr_push *, uint32_t)
|
||||||
|
ndr_set_flags: void (uint32_t *, uint32_t)
|
||||||
|
ndr_size_DATA_BLOB: uint32_t (int, const DATA_BLOB *, int)
|
||||||
|
ndr_size_GUID: size_t (const struct GUID *, int)
|
||||||
|
ndr_size_string: uint32_t (int, const char * const *, int)
|
||||||
|
ndr_size_string_array: size_t (const char **, uint32_t, int)
|
||||||
|
ndr_size_struct: size_t (const void *, int, ndr_push_flags_fn_t)
|
||||||
|
ndr_size_union: size_t (const void *, int, uint32_t, ndr_push_flags_fn_t)
|
||||||
|
ndr_size_winreg_Data_GPO: size_t (const union winreg_Data_GPO *, uint32_t, int)
|
||||||
|
ndr_string_array_size: size_t (struct ndr_push *, const char *)
|
||||||
|
ndr_string_length: uint32_t (const void *, uint32_t)
|
||||||
|
ndr_syntax_id_buf_string: char *(const struct ndr_syntax_id *, struct ndr_syntax_id_buf *)
|
||||||
|
ndr_syntax_id_equal: bool (const struct ndr_syntax_id *, const struct ndr_syntax_id *)
|
||||||
|
ndr_syntax_id_from_string: bool (const char *, struct ndr_syntax_id *)
|
||||||
|
ndr_syntax_id_null: uuid = {time_low = 0, time_mid = 0, time_hi_and_version = 0, clock_seq = "\000", node = "\000\000\000\000\000"}, if_version = 0
|
||||||
|
ndr_syntax_id_to_string: char *(TALLOC_CTX *, const struct ndr_syntax_id *)
|
||||||
|
ndr_token_max_list_size: size_t (void)
|
||||||
|
ndr_token_peek: uint32_t (struct ndr_token_list *, const void *)
|
||||||
|
ndr_token_retrieve: enum ndr_err_code (struct ndr_token_list *, const void *, uint32_t *)
|
||||||
|
ndr_token_retrieve_cmp_fn: enum ndr_err_code (struct ndr_token_list *, const void *, uint32_t *, comparison_fn_t, bool)
|
||||||
|
ndr_token_store: enum ndr_err_code (TALLOC_CTX *, struct ndr_token_list *, const void *, uint32_t)
|
||||||
|
ndr_transfer_syntax_ndr: uuid = {time_low = 2324192516, time_mid = 7403, time_hi_and_version = 4553, clock_seq = "\237\350", node = "\b\000+\020H`"}, if_version = 2
|
||||||
|
ndr_transfer_syntax_ndr64: uuid = {time_low = 1903232307, time_mid = 48826, time_hi_and_version = 18743, clock_seq = "\203\031", node = "\265\333\357\234\314\066"}, if_version = 1
|
||||||
|
ndr_zero_memory: void (void *, size_t)
|
@ -29,6 +29,7 @@
|
|||||||
|
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
#include "librpc/ndr/libndr.h"
|
#include "librpc/ndr/libndr.h"
|
||||||
|
#include "librpc/ndr/ndr_private.h"
|
||||||
#include "../lib/util/dlinklist.h"
|
#include "../lib/util/dlinklist.h"
|
||||||
|
|
||||||
#undef DBGC_CLASS
|
#undef DBGC_CLASS
|
||||||
@ -47,6 +48,10 @@
|
|||||||
*/
|
*/
|
||||||
#define NDR_TOKEN_MAX_LIST_SIZE 65535
|
#define NDR_TOKEN_MAX_LIST_SIZE 65535
|
||||||
|
|
||||||
|
size_t ndr_token_max_list_size(void) {
|
||||||
|
return NDR_TOKEN_MAX_LIST_SIZE;
|
||||||
|
};
|
||||||
|
|
||||||
/* this guid indicates NDR encoding in a protocol tower */
|
/* this guid indicates NDR encoding in a protocol tower */
|
||||||
const struct ndr_syntax_id ndr_transfer_syntax_ndr = {
|
const struct ndr_syntax_id ndr_transfer_syntax_ndr = {
|
||||||
{ 0x8a885d04, 0x1ceb, 0x11c9, {0x9f, 0xe8}, {0x08,0x00,0x2b,0x10,0x48,0x60} },
|
{ 0x8a885d04, 0x1ceb, 0x11c9, {0x9f, 0xe8}, {0x08,0x00,0x2b,0x10,0x48,0x60} },
|
||||||
|
32
librpc/ndr/ndr_private.h
Normal file
32
librpc/ndr/ndr_private.h
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
/*
|
||||||
|
Unix SMB/CIFS implementation.
|
||||||
|
rpc interface definitions
|
||||||
|
|
||||||
|
Copyright (C) Andrew Tridgell 2003
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* This is not a public header file that is installed as part of Samba.
|
||||||
|
*
|
||||||
|
* Instead, this is to allow our python layer to get to the
|
||||||
|
* NDR_TOKEN_MAX_LIST_SIZE
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __NDR_PRIVATE_H__
|
||||||
|
#define __NDR_PRIVATE_H__
|
||||||
|
|
||||||
|
size_t ndr_token_max_list_size(void);
|
||||||
|
|
||||||
|
#endif
|
@ -649,7 +649,7 @@ bld.SAMBA_LIBRARY('ndr',
|
|||||||
public_deps='samba-errors talloc samba-util util_str_hex',
|
public_deps='samba-errors talloc samba-util util_str_hex',
|
||||||
public_headers='gen_ndr/misc.h gen_ndr/ndr_misc.h ndr/libndr.h:ndr.h',
|
public_headers='gen_ndr/misc.h gen_ndr/ndr_misc.h ndr/libndr.h:ndr.h',
|
||||||
header_path= [('*gen_ndr*', 'gen_ndr')],
|
header_path= [('*gen_ndr*', 'gen_ndr')],
|
||||||
vnum='1.0.2',
|
vnum='2.0.0',
|
||||||
abi_directory='ABI',
|
abi_directory='ABI',
|
||||||
abi_match='!ndr_table_* ndr_* GUID_* _ndr_pull_error* _ndr_push_error*',
|
abi_match='!ndr_table_* ndr_* GUID_* _ndr_pull_error* _ndr_push_error*',
|
||||||
)
|
)
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
#include "param/pyparam.h"
|
#include "param/pyparam.h"
|
||||||
#include "lib/socket/netif.h"
|
#include "lib/socket/netif.h"
|
||||||
#include "lib/util/debug.h"
|
#include "lib/util/debug.h"
|
||||||
|
#include "librpc/ndr/ndr_private.h"
|
||||||
|
|
||||||
void init_glue(void);
|
void init_glue(void);
|
||||||
static PyObject *PyExc_NTSTATUSError;
|
static PyObject *PyExc_NTSTATUSError;
|
||||||
@ -266,6 +267,12 @@ static PyObject *py_is_selftest_enabled(PyObject *self,
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static PyObject *py_ndr_token_max_list_size(PyObject *self,
|
||||||
|
PyObject *Py_UNUSED(ignored))
|
||||||
|
{
|
||||||
|
return PyLong_FromLong(ndr_token_max_list_size());
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
return the list of interface IPs we have configured
|
return the list of interface IPs we have configured
|
||||||
takes an loadparm context, returns a list of IPs in string form
|
takes an loadparm context, returns a list of IPs in string form
|
||||||
@ -460,6 +467,8 @@ static PyMethodDef py_misc_methods[] = {
|
|||||||
"is Samba built with AD DC?" },
|
"is Samba built with AD DC?" },
|
||||||
{ "is_selftest_enabled", (PyCFunction)py_is_selftest_enabled,
|
{ "is_selftest_enabled", (PyCFunction)py_is_selftest_enabled,
|
||||||
METH_NOARGS, "is Samba built with selftest enabled?" },
|
METH_NOARGS, "is Samba built with selftest enabled?" },
|
||||||
|
{ "ndr_token_max_list_size", (PyCFunction)py_ndr_token_max_list_size,
|
||||||
|
METH_NOARGS, "How many NDR internal tokens is too many for this build?" },
|
||||||
{0}
|
{0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
138
python/samba/tests/ndr.py
Normal file
138
python/samba/tests/ndr.py
Normal file
@ -0,0 +1,138 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
# Unix SMB/CIFS implementation.
|
||||||
|
# Copyright © Andrew Bartlett <abartlet@samba.org> 2021
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
"""Test of Network Data Representation (NDR) marshalling and unmarshalling."""
|
||||||
|
import samba
|
||||||
|
import samba.ndr as ndr
|
||||||
|
from samba.dcerpc import winbind, security, lsa
|
||||||
|
|
||||||
|
class NdrTestCase(samba.tests.TestCase):
|
||||||
|
def test_wbint_Principal(self):
|
||||||
|
x = winbind.wbint_Principal()
|
||||||
|
|
||||||
|
x.sid = security.dom_sid(security.SID_NT_SCHANNEL_AUTHENTICATION)
|
||||||
|
|
||||||
|
x.type = lsa.SID_NAME_USER
|
||||||
|
|
||||||
|
x.name = "fred"
|
||||||
|
|
||||||
|
b = ndr.ndr_pack(x)
|
||||||
|
|
||||||
|
y = ndr.ndr_unpack(winbind.wbint_Principal, b)
|
||||||
|
|
||||||
|
self.assertEqual(x.sid, y.sid)
|
||||||
|
self.assertEqual(x.type, y.type)
|
||||||
|
self.assertEqual(x.name, y.name)
|
||||||
|
|
||||||
|
def test_wbint_Principal_null_name(self):
|
||||||
|
x = winbind.wbint_Principal()
|
||||||
|
|
||||||
|
x.sid = security.dom_sid(security.SID_NT_SCHANNEL_AUTHENTICATION)
|
||||||
|
|
||||||
|
x.type = lsa.SID_NAME_USER
|
||||||
|
|
||||||
|
x.name = None
|
||||||
|
|
||||||
|
b = ndr.ndr_pack(x)
|
||||||
|
|
||||||
|
y = ndr.ndr_unpack(winbind.wbint_Principal, b)
|
||||||
|
|
||||||
|
self.assertEqual(x.sid, y.sid)
|
||||||
|
self.assertEqual(x.type, y.type)
|
||||||
|
self.assertEqual(x.name, y.name)
|
||||||
|
|
||||||
|
def test_wbint_Principals(self):
|
||||||
|
|
||||||
|
principals = []
|
||||||
|
|
||||||
|
for i in range(0, 10):
|
||||||
|
x = winbind.wbint_Principal()
|
||||||
|
|
||||||
|
x.sid = security.dom_sid(security.SID_NT_SCHANNEL_AUTHENTICATION)
|
||||||
|
|
||||||
|
x.type = lsa.SID_NAME_USER
|
||||||
|
|
||||||
|
x.name = None
|
||||||
|
|
||||||
|
principals.append(x)
|
||||||
|
|
||||||
|
wb_principals = winbind.wbint_Principals()
|
||||||
|
wb_principals.num_principals = 10
|
||||||
|
wb_principals.principals = principals
|
||||||
|
|
||||||
|
b = ndr.ndr_pack(wb_principals)
|
||||||
|
|
||||||
|
unpacked_principals = ndr.ndr_unpack(winbind.wbint_Principals,
|
||||||
|
b)
|
||||||
|
|
||||||
|
self.assertEqual(wb_principals.num_principals,
|
||||||
|
unpacked_principals.num_principals)
|
||||||
|
|
||||||
|
for i in range(0, 10):
|
||||||
|
x = principals[i]
|
||||||
|
y = unpacked_principals.principals[i]
|
||||||
|
self.assertEqual(x.sid, y.sid)
|
||||||
|
self.assertEqual(x.type, y.type)
|
||||||
|
self.assertEqual(x.name, y.name)
|
||||||
|
|
||||||
|
def test_wbint_10_Principals(self):
|
||||||
|
num = 10
|
||||||
|
(principals, unpacked_principals) = self._test_wbint_Principals(num)
|
||||||
|
|
||||||
|
for i in range(0, num):
|
||||||
|
x = principals[i]
|
||||||
|
y = unpacked_principals.principals[i]
|
||||||
|
self.assertEqual(x.sid, y.sid)
|
||||||
|
self.assertEqual(x.type, y.type)
|
||||||
|
self.assertEqual(x.name, y.name)
|
||||||
|
|
||||||
|
def test_wbint_max_token_Principals(self):
|
||||||
|
self._test_wbint_Principals(samba._glue.ndr_token_max_list_size()+1)
|
||||||
|
|
||||||
|
def _test_wbint_Principals(self, num):
|
||||||
|
|
||||||
|
principals = []
|
||||||
|
for i in range(0, num):
|
||||||
|
x = winbind.wbint_Principal()
|
||||||
|
|
||||||
|
x.sid = security.dom_sid(security.SID_NT_SCHANNEL_AUTHENTICATION + "-%d" % num)
|
||||||
|
|
||||||
|
x.type = lsa.SID_NAME_USER
|
||||||
|
|
||||||
|
x.name = "fred%d" % num
|
||||||
|
|
||||||
|
principals.append(x)
|
||||||
|
|
||||||
|
wb_principals = winbind.wbint_Principals()
|
||||||
|
wb_principals.num_principals = num
|
||||||
|
wb_principals.principals = principals
|
||||||
|
|
||||||
|
b = ndr.ndr_pack(wb_principals)
|
||||||
|
|
||||||
|
try:
|
||||||
|
unpacked_principals = ndr.ndr_unpack(winbind.wbint_Principals,
|
||||||
|
b)
|
||||||
|
except RuntimeError as e:
|
||||||
|
self.fail(e)
|
||||||
|
|
||||||
|
self.assertEqual(wb_principals.num_principals,
|
||||||
|
unpacked_principals.num_principals)
|
||||||
|
|
||||||
|
return (principals, unpacked_principals)
|
@ -99,6 +99,7 @@ def build(bld):
|
|||||||
%s
|
%s
|
||||||
samba-util
|
samba-util
|
||||||
netif
|
netif
|
||||||
|
ndr
|
||||||
%s
|
%s
|
||||||
''' % (pyparam_util, pytalloc_util),
|
''' % (pyparam_util, pytalloc_util),
|
||||||
realname='samba/_glue.so')
|
realname='samba/_glue.so')
|
||||||
|
1
selftest/knownfail.d/ndr
Normal file
1
selftest/knownfail.d/ndr
Normal file
@ -0,0 +1 @@
|
|||||||
|
^samba.tests.ndr.samba.tests.ndr.NdrTestCase.test_wbint_max_token_Principals
|
@ -218,6 +218,7 @@ planpythontestsuite("none", "samba.tests.glue")
|
|||||||
planpythontestsuite("none", "samba.tests.tdb_util")
|
planpythontestsuite("none", "samba.tests.tdb_util")
|
||||||
planpythontestsuite("none", "samba.tests.samdb")
|
planpythontestsuite("none", "samba.tests.samdb")
|
||||||
planpythontestsuite("none", "samba.tests.samdb_api")
|
planpythontestsuite("none", "samba.tests.samdb_api")
|
||||||
|
planpythontestsuite("none", "samba.tests.ndr")
|
||||||
|
|
||||||
if with_pam:
|
if with_pam:
|
||||||
env = "ad_member"
|
env = "ad_member"
|
||||||
|
Loading…
Reference in New Issue
Block a user