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

📄 ldb_controls.c

📁 samba最新软件
💻 C
📖 第 1 页 / 共 2 页
字号:
			p = &(control_strings[i][12]);			ret = sscanf(p, "%d:%d", &crit, &type);			if ((ret != 2) || (crit < 0) || (crit > 1) || (type < 0) || (type > 1)) {				ret = sscanf(p, "%d", &crit);				if ((ret != 1) || (crit < 0) || (crit > 1)) {					error_string = talloc_asprintf(mem_ctx, "invalid extended_dn control syntax\n");					error_string = talloc_asprintf_append(error_string, " syntax: crit(b)[:type(i)]\n");					error_string = talloc_asprintf_append(error_string, "   note: b = boolean\n");					error_string = talloc_asprintf_append(error_string, "         i = integer\n");					error_string = talloc_asprintf_append(error_string, "   valid values are: 0 - hexadecimal representation\n");					error_string = talloc_asprintf_append(error_string, "                     1 - normal string representation");					ldb_set_errstring(ldb, error_string);					talloc_free(error_string);					return NULL;				}				control = NULL;			} else {				control = talloc(ctrl, struct ldb_extended_dn_control);				control->type = type;			}			ctrl[i] = talloc(ctrl, struct ldb_control);			if (!ctrl[i]) {				ldb_oom(ldb);				return NULL;			}			ctrl[i]->oid = LDB_CONTROL_EXTENDED_DN_OID;			ctrl[i]->critical = crit;			ctrl[i]->data = talloc_steal(ctrl[i], control);			continue;		}		if (strncmp(control_strings[i], "sd_flags:", 9) == 0) {			struct ldb_sd_flags_control *control;			const char *p;			int crit, ret;			unsigned secinfo_flags;			p = &(control_strings[i][9]);			ret = sscanf(p, "%d:%u", &crit, &secinfo_flags);			if ((ret != 2) || (crit < 0) || (crit > 1) || (secinfo_flags < 0) || (secinfo_flags > 0xF)) {				error_string = talloc_asprintf(mem_ctx, "invalid sd_flags control syntax\n");				error_string = talloc_asprintf_append(error_string, " syntax: crit(b):secinfo_flags(n)\n");				error_string = talloc_asprintf_append(error_string, "   note: b = boolean, n = number");				ldb_set_errstring(ldb, error_string);				talloc_free(error_string);				return NULL;			}			ctrl[i] = talloc(ctrl, struct ldb_control);			if (!ctrl[i]) {				ldb_oom(ldb);				return NULL;			}			ctrl[i]->oid = LDB_CONTROL_SD_FLAGS_OID;			ctrl[i]->critical = crit;			control = talloc(ctrl[i], struct ldb_sd_flags_control);			control->secinfo_flags = secinfo_flags;			ctrl[i]->data = control;			continue;		}		if (strncmp(control_strings[i], "search_options:", 15) == 0) {			struct ldb_search_options_control *control;			const char *p;			int crit, ret;			unsigned search_options;			p = &(control_strings[i][15]);			ret = sscanf(p, "%d:%u", &crit, &search_options);			if ((ret != 2) || (crit < 0) || (crit > 1) || (search_options < 0) || (search_options > 0xF)) {				error_string = talloc_asprintf(mem_ctx, "invalid search_options control syntax\n");				error_string = talloc_asprintf_append(error_string, " syntax: crit(b):search_options(n)\n");				error_string = talloc_asprintf_append(error_string, "   note: b = boolean, n = number");				ldb_set_errstring(ldb, error_string);				talloc_free(error_string);				return NULL;			}			ctrl[i] = talloc(ctrl, struct ldb_control);			if (!ctrl[i]) {				ldb_oom(ldb);				return NULL;			}			ctrl[i]->oid = LDB_CONTROL_SEARCH_OPTIONS_OID;			ctrl[i]->critical = crit;			control = talloc(ctrl[i], struct ldb_search_options_control);			control->search_options = search_options;			ctrl[i]->data = control;			continue;		}		if (strncmp(control_strings[i], "domain_scope:", 13) == 0) {			const char *p;			int crit, ret;			p = &(control_strings[i][13]);			ret = sscanf(p, "%d", &crit);			if ((ret != 1) || (crit < 0) || (crit > 1)) {				error_string = talloc_asprintf(mem_ctx, "invalid domain_scope control syntax\n");				error_string = talloc_asprintf_append(error_string, " syntax: crit(b)\n");				error_string = talloc_asprintf_append(error_string, "   note: b = boolean");				ldb_set_errstring(ldb, error_string);				talloc_free(error_string);				return NULL;			}			ctrl[i] = talloc(ctrl, struct ldb_control);			if (!ctrl[i]) {				ldb_oom(ldb);				return NULL;			}			ctrl[i]->oid = LDB_CONTROL_DOMAIN_SCOPE_OID;			ctrl[i]->critical = crit;			ctrl[i]->data = NULL;			continue;		}		if (strncmp(control_strings[i], "paged_results:", 14) == 0) {			struct ldb_paged_control *control;			const char *p;			int crit, size, ret;		       			p = &(control_strings[i][14]);			ret = sscanf(p, "%d:%d", &crit, &size);			if ((ret != 2) || (crit < 0) || (crit > 1) || (size < 0)) {				error_string = talloc_asprintf(mem_ctx, "invalid paged_results control syntax\n");				error_string = talloc_asprintf_append(error_string, " syntax: crit(b):size(n)\n");				error_string = talloc_asprintf_append(error_string, "   note: b = boolean, n = number");				ldb_set_errstring(ldb, error_string);				talloc_free(error_string);				return NULL;			}			ctrl[i] = talloc(ctrl, struct ldb_control);			if (!ctrl[i]) {				ldb_oom(ldb);				return NULL;			}			ctrl[i]->oid = LDB_CONTROL_PAGED_RESULTS_OID;			ctrl[i]->critical = crit;			control = talloc(ctrl[i], struct ldb_paged_control);			control->size = size;			control->cookie = NULL;			control->cookie_len = 0;			ctrl[i]->data = control;			continue;		}		if (strncmp(control_strings[i], "server_sort:", 12) == 0) {			struct ldb_server_sort_control **control;			const char *p;			char attr[256];			char rule[128];			int crit, rev, ret;			attr[0] = '\0';			rule[0] = '\0';			p = &(control_strings[i][12]);			ret = sscanf(p, "%d:%d:%255[^:]:%127[^:]", &crit, &rev, attr, rule);			if ((ret < 3) || (crit < 0) || (crit > 1) || (rev < 0 ) || (rev > 1) ||attr[0] == '\0') {				error_string = talloc_asprintf(mem_ctx, "invalid server_sort control syntax\n");				error_string = talloc_asprintf_append(error_string, " syntax: crit(b):rev(b):attr(s)[:rule(s)]\n");				error_string = talloc_asprintf_append(error_string, "   note: b = boolean, s = string");				ldb_set_errstring(ldb, error_string);				talloc_free(error_string);				return NULL;			}			ctrl[i] = talloc(ctrl, struct ldb_control);			if (!ctrl[i]) {				ldb_oom(ldb);				return NULL;			}			ctrl[i]->oid = LDB_CONTROL_SERVER_SORT_OID;			ctrl[i]->critical = crit;			control = talloc_array(ctrl[i], struct ldb_server_sort_control *, 2);			control[0] = talloc(control, struct ldb_server_sort_control);			control[0]->attributeName = talloc_strdup(control, attr);			if (rule[0])				control[0]->orderingRule = talloc_strdup(control, rule);			else				control[0]->orderingRule = NULL;			control[0]->reverse = rev;			control[1] = NULL;			ctrl[i]->data = control;			continue;		}		if (strncmp(control_strings[i], "notification:", 13) == 0) {			const char *p;			int crit, ret;			p = &(control_strings[i][13]);			ret = sscanf(p, "%d", &crit);			if ((ret != 1) || (crit < 0) || (crit > 1)) {				error_string = talloc_asprintf(mem_ctx, "invalid notification control syntax\n");				error_string = talloc_asprintf_append(error_string, " syntax: crit(b)\n");				error_string = talloc_asprintf_append(error_string, "   note: b = boolean");				ldb_set_errstring(ldb, error_string);				talloc_free(error_string);				return NULL;			}			ctrl[i] = talloc(ctrl, struct ldb_control);			if (!ctrl[i]) {				ldb_oom(ldb);				return NULL;			}			ctrl[i]->oid = LDB_CONTROL_NOTIFICATION_OID;			ctrl[i]->critical = crit;			ctrl[i]->data = NULL;			continue;		}		if (strncmp(control_strings[i], "show_deleted:", 13) == 0) {			const char *p;			int crit, ret;			p = &(control_strings[i][13]);			ret = sscanf(p, "%d", &crit);			if ((ret != 1) || (crit < 0) || (crit > 1)) {				error_string = talloc_asprintf(mem_ctx, "invalid show_deleted control syntax\n");				error_string = talloc_asprintf_append(error_string, " syntax: crit(b)\n");				error_string = talloc_asprintf_append(error_string, "   note: b = boolean");				ldb_set_errstring(ldb, error_string);				talloc_free(error_string);				return NULL;			}			ctrl[i] = talloc(ctrl, struct ldb_control);			if (!ctrl[i]) {				ldb_oom(ldb);				return NULL;			}			ctrl[i]->oid = LDB_CONTROL_SHOW_DELETED_OID;			ctrl[i]->critical = crit;			ctrl[i]->data = NULL;			continue;		}		if (strncmp(control_strings[i], "permissive_modify:", 18) == 0) {			const char *p;			int crit, ret;			p = &(control_strings[i][18]);			ret = sscanf(p, "%d", &crit);			if ((ret != 1) || (crit < 0) || (crit > 1)) {				error_string = talloc_asprintf(mem_ctx, "invalid permissive_modify control syntax\n");				error_string = talloc_asprintf_append(error_string, " syntax: crit(b)\n");				error_string = talloc_asprintf_append(error_string, "   note: b = boolean");				ldb_set_errstring(ldb, error_string);				talloc_free(error_string);				return NULL;			}			ctrl[i] = talloc(ctrl, struct ldb_control);			if (!ctrl[i]) {				ldb_oom(ldb);				return NULL;			}			ctrl[i]->oid = LDB_CONTROL_PERMISSIVE_MODIFY_OID;			ctrl[i]->critical = crit;			ctrl[i]->data = NULL;			continue;		}		/* no controls matched, throw an error */		ldb_asprintf_errstring(ldb, "Invalid control name: '%s'", control_strings[i]);		return NULL;	}	ctrl[i] = NULL;	return ctrl;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -