⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ndr_wkssvc.c

📁 samba服务器!
💻 C
📖 第 1 页 / 共 5 页
字号:
			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 + -