9c73bd
From 96ff6873b024718fcbb7b011eee58aab84c3086f Mon Sep 17 00:00:00 2001
9c73bd
From: Alexander Bokovoy <abokovoy@redhat.com>
9c73bd
Date: Mon, 11 Sep 2017 15:32:38 +0300
9c73bd
Subject: [PATCH 11/17] Move a helper to build DN to a format.c
9c73bd
9c73bd
---
9c73bd
 src/back-sch-nss.c | 45 ++-------------------------------------------
9c73bd
 src/format.c       | 41 +++++++++++++++++++++++++++++++++++++++++
9c73bd
 src/format.h       |  2 ++
9c73bd
 3 files changed, 45 insertions(+), 43 deletions(-)
9c73bd
9c73bd
diff --git a/src/back-sch-nss.c b/src/back-sch-nss.c
9c73bd
index db63e59..e4d027e 100644
9c73bd
--- a/src/back-sch-nss.c
9c73bd
+++ b/src/back-sch-nss.c
9c73bd
@@ -186,47 +186,6 @@ backend_search_filter_has_cn_uid(Slapi_Filter *filter, void *arg)
9c73bd
 	return SLAPI_FILTER_SCAN_CONTINUE;
9c73bd
 }
9c73bd
 
9c73bd
-static char *
9c73bd
-backend_build_dn(const char *attribute, const char *value,
9c73bd
-		 const char *container_sdn)
9c73bd
-{
9c73bd
-	Slapi_RDN *rdn;
9c73bd
-	Slapi_DN *sdn;
9c73bd
-	char *val, *dn = NULL;
9c73bd
-	const char *ndn, *hexchars = "0123456789ABCDEF";
9c73bd
-	int i;
9c73bd
-
9c73bd
-	val = malloc(strlen(value) * 3 + 1);
9c73bd
-	if (val == NULL) {
9c73bd
-		return NULL;
9c73bd
-	}
9c73bd
-	rdn = slapi_rdn_new();
9c73bd
-	if (rdn == NULL) {
9c73bd
-		free(val);
9c73bd
-		return NULL;
9c73bd
-	}
9c73bd
-        for (i = 0; value[i] != '\0'; i++) {
9c73bd
-		val[i * 3] = '\\';
9c73bd
-		val[i * 3 + 1] = hexchars[(value[i] & 0xf0) >> 4];
9c73bd
-		val[i * 3 + 2] = hexchars[value[i] & 0xf];
9c73bd
-	}
9c73bd
-	val[i * 3] = '\0';
9c73bd
-	if (slapi_rdn_add(rdn, attribute, val) == 1) {
9c73bd
-		sdn = slapi_sdn_new_dn_byval(container_sdn);
9c73bd
-		if (sdn != NULL) {
9c73bd
-			sdn = slapi_sdn_add_rdn(sdn, rdn);
9c73bd
-			ndn = slapi_sdn_get_ndn(sdn);
9c73bd
-			if (ndn != NULL) {
9c73bd
-				dn = slapi_ch_strdup(ndn);
9c73bd
-			}
9c73bd
-			slapi_sdn_free(&sdn;;
9c73bd
-		}
9c73bd
-	}
9c73bd
-	free(val);
9c73bd
-	slapi_rdn_free(&rdn;;
9c73bd
-	return dn;
9c73bd
-}
9c73bd
-
9c73bd
 static Slapi_Entry *
9c73bd
 backend_make_user_entry_from_nsswitch_passwd(struct passwd *pwd,
9c73bd
 					     char *container_sdn,
9c73bd
@@ -257,7 +216,7 @@ backend_make_user_entry_from_nsswitch_passwd(struct passwd *pwd,
9c73bd
 		return NULL;
9c73bd
 	}
9c73bd
 
9c73bd
-	dn = backend_build_dn("uid", name, container_sdn);
9c73bd
+	dn = format_build_dn("uid", name, container_sdn);
9c73bd
 	if (dn == NULL) {
9c73bd
 		slapi_log_error(SLAPI_LOG_FATAL,
9c73bd
 				cbdata->state->plugin_desc->spd_id,
9c73bd
@@ -556,7 +515,7 @@ backend_make_group_entry_from_nsswitch_group(struct group *grp,
9c73bd
 		return NULL;
9c73bd
 	}
9c73bd
 
9c73bd
-	dn = backend_build_dn("cn", grp->gr_name, container_sdn);
9c73bd
+	dn = format_build_dn("cn", grp->gr_name, container_sdn);
9c73bd
 	if (dn == NULL) {
9c73bd
 		slapi_log_error(SLAPI_LOG_FATAL,
9c73bd
 				cbdata->state->plugin_desc->spd_id,
9c73bd
diff --git a/src/format.c b/src/format.c
9c73bd
index ee6b8f3..ae4824c 100644
9c73bd
--- a/src/format.c
9c73bd
+++ b/src/format.c
9c73bd
@@ -4825,3 +4825,44 @@ format_escape_for_filter(const char *unescaped)
9c73bd
 	}
9c73bd
 	return ret;
9c73bd
 }
9c73bd
+
9c73bd
+char *
9c73bd
+format_build_dn(const char *attribute, const char *value,
9c73bd
+		const char *container_sdn)
9c73bd
+{
9c73bd
+	Slapi_RDN *rdn;
9c73bd
+	Slapi_DN *sdn;
9c73bd
+	char *val, *dn = NULL;
9c73bd
+	const char *ndn, *hexchars = "0123456789ABCDEF";
9c73bd
+	int i;
9c73bd
+
9c73bd
+	val = malloc(strlen(value) * 3 + 1);
9c73bd
+	if (val == NULL) {
9c73bd
+		return NULL;
9c73bd
+	}
9c73bd
+	rdn = slapi_rdn_new();
9c73bd
+	if (rdn == NULL) {
9c73bd
+		free(val);
9c73bd
+		return NULL;
9c73bd
+	}
9c73bd
+        for (i = 0; value[i] != '\0'; i++) {
9c73bd
+		val[i * 3] = '\\';
9c73bd
+		val[i * 3 + 1] = hexchars[(value[i] & 0xf0) >> 4];
9c73bd
+		val[i * 3 + 2] = hexchars[value[i] & 0xf];
9c73bd
+	}
9c73bd
+	val[i * 3] = '\0';
9c73bd
+	if (slapi_rdn_add(rdn, attribute, val) == 1) {
9c73bd
+		sdn = slapi_sdn_new_dn_byval(container_sdn);
9c73bd
+		if (sdn != NULL) {
9c73bd
+			sdn = slapi_sdn_add_rdn(sdn, rdn);
9c73bd
+			ndn = slapi_sdn_get_ndn(sdn);
9c73bd
+			if (ndn != NULL) {
9c73bd
+				dn = slapi_ch_strdup(ndn);
9c73bd
+			}
9c73bd
+			slapi_sdn_free(&sdn;;
9c73bd
+		}
9c73bd
+	}
9c73bd
+	free(val);
9c73bd
+	slapi_rdn_free(&rdn;;
9c73bd
+	return dn;
9c73bd
+}
9c73bd
diff --git a/src/format.h b/src/format.h
9c73bd
index 4cde2dc..626d4a9 100644
9c73bd
--- a/src/format.h
9c73bd
+++ b/src/format.h
9c73bd
@@ -83,4 +83,6 @@ char **format_get_data_set(struct plugin_state *state,
9c73bd
 			   unsigned int **data_lengths);
9c73bd
 
9c73bd
 char *format_escape_for_filter(const char *unescaped);
9c73bd
+char *format_build_dn(const char *attribute, const char *value,
9c73bd
+		      const char *container_sdn);
9c73bd
 #endif
9c73bd
-- 
9c73bd
2.13.6
9c73bd