summaryrefslogtreecommitdiffstats
path: root/src/backend.c
diff options
context:
space:
mode:
authorNalin Dahyabhai <nalin.dahyabhai@pobox.com>2008-06-06 18:14:53 -0400
committerNalin Dahyabhai <nalin.dahyabhai@pobox.com>2008-06-06 18:14:53 -0400
commitaa0b17ae06f7e774a9990d550ce1fa623d7606db (patch)
tree1b47320b4f950b0096397ae02f85903bbdaa2502 /src/backend.c
parent803b84402927173144b610eeb01362beef165913 (diff)
downloadslapi-nis-aa0b17ae06f7e774a9990d550ce1fa623d7606db.tar.gz
slapi-nis-aa0b17ae06f7e774a9990d550ce1fa623d7606db.tar.xz
slapi-nis-aa0b17ae06f7e774a9990d550ce1fa623d7606db.zip
- escape DNs when we use them to build filters
Diffstat (limited to 'src/backend.c')
-rw-r--r--src/backend.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/backend.c b/src/backend.c
index 317dd79..bcaa64c 100644
--- a/src/backend.c
+++ b/src/backend.c
@@ -1015,7 +1015,7 @@ backend_update_references_cb(const char *domain, const char *map,
Slapi_DN *referred_to_sdn;
Slapi_ValueSet *values;
Slapi_Value *value;
- char **referred_to_dn, **ref_attrs, *actual_attr, *filter;
+ char **referred_to_dn, **ref_attrs, *actual_attr, *filter, *tndn;
struct format_inref_attr **inref_attrs;
const char *ndn, *dn;
int i, j, disposition, buffer_flags, filter_size, n_ref_attrs;
@@ -1038,6 +1038,14 @@ backend_update_references_cb(const char *domain, const char *map,
strlen(map_data->entry_filter) +
1;
ndn = slapi_entry_get_ndn(cbdata->e);
+ tndn = format_escape_for_filter(ndn);
+ if (tndn == NULL) {
+ slapi_log_error(SLAPI_LOG_PLUGIN,
+ state->plugin_desc->spd_id,
+ "error building filter for "
+ "updating entries\n");
+ return TRUE;
+ }
for (i = 0;
(ref_attrs != NULL) && (ref_attrs[i] != NULL);
i++) {
@@ -1051,6 +1059,7 @@ backend_update_references_cb(const char *domain, const char *map,
state->plugin_desc->spd_id,
"error building filter for "
"updating entries\n");
+ free(tndn);
return TRUE;
}
sprintf(filter, "(&%s(|", map_data->entry_filter);
@@ -1058,12 +1067,13 @@ backend_update_references_cb(const char *domain, const char *map,
(ref_attrs != NULL) && (ref_attrs[i] != NULL);
i++) {
sprintf(filter + strlen(filter),
- "(%s=%s)", ref_attrs[i], ndn);
+ "(%s=%s)", ref_attrs[i], tndn);
}
strcat(filter, "))");
slapi_log_error(SLAPI_LOG_PLUGIN, state->plugin_desc->spd_id,
"searching for referrers using filter \"%s\"\n",
filter);
+ free(tndn);
/* Update any matching entry. */
for (i = 0;
(map_data->bases != NULL) && (map_data->bases[i] != NULL);