📄 ndr_wkssvc.c
字号:
NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->logon_server, ndr_charset_length(r->logon_server, CH_UTF16), sizeof(uint16_t), CH_UTF16)); } } return NT_STATUS_OK;}NTSTATUS ndr_pull_USER_INFO_1(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_1 *r){ uint32_t _ptr_user_name; TALLOC_CTX *_mem_save_user_name_0; uint32_t _ptr_logon_domain; TALLOC_CTX *_mem_save_logon_domain_0; uint32_t _ptr_other_domains; TALLOC_CTX *_mem_save_other_domains_0; uint32_t _ptr_logon_server; TALLOC_CTX *_mem_save_logon_server_0; if (ndr_flags & NDR_SCALARS) { NDR_CHECK(ndr_pull_align(ndr, 4)); NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_user_name)); if (_ptr_user_name) { NDR_PULL_ALLOC(ndr, r->user_name); } else { r->user_name = NULL; } NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_logon_domain)); if (_ptr_logon_domain) { NDR_PULL_ALLOC(ndr, r->logon_domain); } else { r->logon_domain = NULL; } NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_other_domains)); if (_ptr_other_domains) { NDR_PULL_ALLOC(ndr, r->other_domains); } else { r->other_domains = NULL; } NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_logon_server)); if (_ptr_logon_server) { NDR_PULL_ALLOC(ndr, r->logon_server); } else { r->logon_server = NULL; } } if (ndr_flags & NDR_BUFFERS) { if (r->user_name) { _mem_save_user_name_0 = NDR_PULL_GET_MEM_CTX(ndr); NDR_PULL_SET_MEM_CTX(ndr, r->user_name, 0); NDR_CHECK(ndr_pull_array_size(ndr, &r->user_name)); NDR_CHECK(ndr_pull_array_length(ndr, &r->user_name)); if (ndr_get_array_length(ndr, &r->user_name) > ndr_get_array_size(ndr, &r->user_name)) { return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->user_name), ndr_get_array_length(ndr, &r->user_name)); } NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->user_name), sizeof(uint16_t))); NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->user_name, ndr_get_array_length(ndr, &r->user_name), sizeof(uint16_t), CH_UTF16)); NDR_PULL_SET_MEM_CTX(ndr, _mem_save_user_name_0, 0); } if (r->logon_domain) { _mem_save_logon_domain_0 = NDR_PULL_GET_MEM_CTX(ndr); NDR_PULL_SET_MEM_CTX(ndr, r->logon_domain, 0); NDR_CHECK(ndr_pull_array_size(ndr, &r->logon_domain)); NDR_CHECK(ndr_pull_array_length(ndr, &r->logon_domain)); if (ndr_get_array_length(ndr, &r->logon_domain) > ndr_get_array_size(ndr, &r->logon_domain)) { return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->logon_domain), ndr_get_array_length(ndr, &r->logon_domain)); } NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->logon_domain), sizeof(uint16_t))); NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->logon_domain, ndr_get_array_length(ndr, &r->logon_domain), sizeof(uint16_t), CH_UTF16)); NDR_PULL_SET_MEM_CTX(ndr, _mem_save_logon_domain_0, 0); } if (r->other_domains) { _mem_save_other_domains_0 = NDR_PULL_GET_MEM_CTX(ndr); NDR_PULL_SET_MEM_CTX(ndr, r->other_domains, 0); NDR_CHECK(ndr_pull_array_size(ndr, &r->other_domains)); NDR_CHECK(ndr_pull_array_length(ndr, &r->other_domains)); if (ndr_get_array_length(ndr, &r->other_domains) > ndr_get_array_size(ndr, &r->other_domains)) { return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->other_domains), ndr_get_array_length(ndr, &r->other_domains)); } NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->other_domains), sizeof(uint16_t))); NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->other_domains, ndr_get_array_length(ndr, &r->other_domains), sizeof(uint16_t), CH_UTF16)); NDR_PULL_SET_MEM_CTX(ndr, _mem_save_other_domains_0, 0); } if (r->logon_server) { _mem_save_logon_server_0 = NDR_PULL_GET_MEM_CTX(ndr); NDR_PULL_SET_MEM_CTX(ndr, r->logon_server, 0); NDR_CHECK(ndr_pull_array_size(ndr, &r->logon_server)); NDR_CHECK(ndr_pull_array_length(ndr, &r->logon_server)); if (ndr_get_array_length(ndr, &r->logon_server) > ndr_get_array_size(ndr, &r->logon_server)) { return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->logon_server), ndr_get_array_length(ndr, &r->logon_server)); } NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->logon_server), sizeof(uint16_t))); NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->logon_server, ndr_get_array_length(ndr, &r->logon_server), sizeof(uint16_t), CH_UTF16)); NDR_PULL_SET_MEM_CTX(ndr, _mem_save_logon_server_0, 0); } } return NT_STATUS_OK;}_PUBLIC_ void ndr_print_USER_INFO_1(struct ndr_print *ndr, const char *name, const struct USER_INFO_1 *r){ ndr_print_struct(ndr, name, "USER_INFO_1"); ndr->depth++; ndr_print_ptr(ndr, "user_name", r->user_name); ndr->depth++; if (r->user_name) { ndr_print_string(ndr, "user_name", r->user_name); } ndr->depth--; ndr_print_ptr(ndr, "logon_domain", r->logon_domain); ndr->depth++; if (r->logon_domain) { ndr_print_string(ndr, "logon_domain", r->logon_domain); } ndr->depth--; ndr_print_ptr(ndr, "other_domains", r->other_domains); ndr->depth++; if (r->other_domains) { ndr_print_string(ndr, "other_domains", r->other_domains); } ndr->depth--; ndr_print_ptr(ndr, "logon_server", r->logon_server); ndr->depth++; if (r->logon_server) { ndr_print_string(ndr, "logon_server", r->logon_server); } ndr->depth--; ndr->depth--;}NTSTATUS ndr_push_USER_INFO_1_CONTAINER(struct ndr_push *ndr, int ndr_flags, const struct USER_INFO_1_CONTAINER *r){ uint32_t cntr_user1_1; if (ndr_flags & NDR_SCALARS) { NDR_CHECK(ndr_push_align(ndr, 4)); NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->entries_read)); NDR_CHECK(ndr_push_unique_ptr(ndr, r->user1)); } if (ndr_flags & NDR_BUFFERS) { if (r->user1) { NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->entries_read)); for (cntr_user1_1 = 0; cntr_user1_1 < r->entries_read; cntr_user1_1++) { NDR_CHECK(ndr_push_USER_INFO_1(ndr, NDR_SCALARS, &r->user1[cntr_user1_1])); } for (cntr_user1_1 = 0; cntr_user1_1 < r->entries_read; cntr_user1_1++) { NDR_CHECK(ndr_push_USER_INFO_1(ndr, NDR_BUFFERS, &r->user1[cntr_user1_1])); } } } return NT_STATUS_OK;}NTSTATUS ndr_pull_USER_INFO_1_CONTAINER(struct ndr_pull *ndr, int ndr_flags, struct USER_INFO_1_CONTAINER *r){ uint32_t _ptr_user1; uint32_t cntr_user1_1; TALLOC_CTX *_mem_save_user1_0; TALLOC_CTX *_mem_save_user1_1; if (ndr_flags & NDR_SCALARS) { NDR_CHECK(ndr_pull_align(ndr, 4)); NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->entries_read)); NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_user1)); if (_ptr_user1) { NDR_PULL_ALLOC(ndr, r->user1); } else { r->user1 = NULL; } } if (ndr_flags & NDR_BUFFERS) { if (r->user1) { _mem_save_user1_0 = NDR_PULL_GET_MEM_CTX(ndr); NDR_PULL_SET_MEM_CTX(ndr, r->user1, 0); NDR_CHECK(ndr_pull_array_size(ndr, &r->user1)); NDR_PULL_ALLOC_N(ndr, r->user1, ndr_get_array_size(ndr, &r->user1)); _mem_save_user1_1 = NDR_PULL_GET_MEM_CTX(ndr); NDR_PULL_SET_MEM_CTX(ndr, r->user1, 0); for (cntr_user1_1 = 0; cntr_user1_1 < r->entries_read; cntr_user1_1++) { NDR_CHECK(ndr_pull_USER_INFO_1(ndr, NDR_SCALARS, &r->user1[cntr_user1_1])); } for (cntr_user1_1 = 0; cntr_user1_1 < r->entries_read; cntr_user1_1++) { NDR_CHECK(ndr_pull_USER_INFO_1(ndr, NDR_BUFFERS, &r->user1[cntr_user1_1])); } NDR_PULL_SET_MEM_CTX(ndr, _mem_save_user1_1, 0); NDR_PULL_SET_MEM_CTX(ndr, _mem_save_user1_0, 0); } if (r->user1) { NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->user1, r->entries_read)); } } return NT_STATUS_OK;}_PUBLIC_ void ndr_print_USER_INFO_1_CONTAINER(struct ndr_print *ndr, const char *name, const struct USER_INFO_1_CONTAINER *r){ uint32_t cntr_user1_1; ndr_print_struct(ndr, name, "USER_INFO_1_CONTAINER"); ndr->depth++; ndr_print_uint32(ndr, "entries_read", r->entries_read); ndr_print_ptr(ndr, "user1", r->user1); ndr->depth++; if (r->user1) { ndr->print(ndr, "%s: ARRAY(%d)", "user1", r->entries_read); ndr->depth++; for (cntr_user1_1=0;cntr_user1_1<r->entries_read;cntr_user1_1++) { char *idx_1=NULL; asprintf(&idx_1, "[%d]", cntr_user1_1); if (idx_1) { ndr_print_USER_INFO_1(ndr, "user1", &r->user1[cntr_user1_1]); free(idx_1); } } ndr->depth--; } ndr->depth--; ndr->depth--;}NTSTATUS ndr_push_WKS_USER_ENUM_UNION(struct ndr_push *ndr, int ndr_flags, const union WKS_USER_ENUM_UNION *r){ int level; level = ndr_push_get_switch_value(ndr, r); if (ndr_flags & NDR_SCALARS) { NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, level)); switch (level) { case 0: NDR_CHECK(ndr_push_unique_ptr(ndr, r->user0)); break; case 1: NDR_CHECK(ndr_push_unique_ptr(ndr, r->user1)); break; default: return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level); } } if (ndr_flags & NDR_BUFFERS) { switch (level) { case 0: if (r->user0) { NDR_CHECK(ndr_push_USER_INFO_0_CONTAINER(ndr, NDR_SCALARS|NDR_BUFFERS, r->user0)); } break; case 1: if (r->user1) { NDR_CHECK(ndr_push_USER_INFO_1_CONTAINER(ndr, NDR_SCALARS|NDR_BUFFERS, r->user1)); } break; default: return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level); } } return NT_STATUS_OK;}NTSTATUS ndr_pull_WKS_USER_ENUM_UNION(struct ndr_pull *ndr, int ndr_flags, union WKS_USER_ENUM_UNION *r){ int level; uint32_t _level; TALLOC_CTX *_mem_save_user0_0; TALLOC_CTX *_mem_save_user1_0; level = ndr_pull_get_switch_value(ndr, r); if (ndr_flags & NDR_SCALARS) { NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level)); if (_level != level) { return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for WKS_USER_ENUM_UNION", _level); } switch (level) { case 0: { uint32_t _ptr_user0; NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_user0)); if (_ptr_user0) { NDR_PULL_ALLOC(ndr, r->user0); } else { r->user0 = NULL; } break; } case 1: { uint32_t _ptr_user1; NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_user1)); if (_ptr_user1) { NDR_PULL_ALLOC(ndr, r->user1); } else { r->user1 = NULL; } break; } default: return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level); } } if (ndr_flags & NDR_BUFFERS) { switch (level) { case 0: if (r->user0) { _mem_save_user0_0 = NDR_PULL_GET_MEM_CTX(ndr); NDR_PULL_SET_MEM_CTX(ndr, r->user0, 0); NDR_CHECK(ndr_pull_USER_INFO_0_CONTAINER(ndr, NDR_SCALARS|NDR_BUFFERS, r->user0)); NDR_PULL_SET_MEM_CTX(ndr, _mem_save_user0_0, 0); } break; case 1: if (r->user1) { _mem_save_user1_0 = NDR_PULL_GET_MEM_CTX(ndr); NDR_PULL_SET_MEM_CTX(ndr, r->user1, 0); NDR_CHECK(ndr_pull_USER_INFO_1_CONTAINER(ndr, NDR_SCALARS|NDR_BUFFERS, r->user1)); NDR_PULL_SET_MEM_CTX(ndr, _mem_save_user1_0, 0); } break; default: return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level); } } return NT_STATUS_OK;}_PUBLIC_ void ndr_print_WKS_USER_ENUM_UNION(struct ndr_print *ndr, const char *name, const union WKS_USER_ENUM_UNION *r){ int level; level = ndr_print_get_switch_value(ndr, r); ndr_print_union(ndr, name, level, "WKS_USER_ENUM_UNION"); switch (level) { case 0: ndr_print_ptr(ndr, "user0", r->user0); ndr->depth++; if (r->user0) { ndr_print_USER_INFO_0_CONTAINER(ndr, "user0", r->user0); } ndr->depth--; break; case 1: ndr_print_ptr(ndr, "user1", r->user1); ndr->depth++; if (r->user1) { ndr_print_USER_INFO_1_CONTAINER(ndr, "user1", r->user1); } ndr->depth--; break; default: ndr_print_bad_level(ndr, name, level); }}NTSTATUS ndr_push_wkssvc_NetWkstaTransportInfo0(struct ndr_push *ndr, int ndr_flags, const struct wkssvc_NetWkstaTransportInfo0 *r){ if (ndr_flags & NDR_SCALARS) { NDR_CHECK(ndr_push_align(ndr, 4)); NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->quality_of_service)); NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->vc_count)); NDR_CHECK(ndr_push_unique_ptr(ndr, r->name)); NDR_CHECK(ndr_push_unique_ptr(ndr, r->address)); NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->wan_link)); } if (ndr_flags & NDR_BUFFERS) { if (r->name) { NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->name, CH_UTF16))); NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0)); NDR_CHECK(ndr_push_uint32(ndr,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -