diff options
| author | Nalin Dahyabhai <nalin.dahyabhai@pobox.com> | 2008-06-06 18:14:53 -0400 |
|---|---|---|
| committer | Nalin Dahyabhai <nalin.dahyabhai@pobox.com> | 2008-06-06 18:14:53 -0400 |
| commit | aa0b17ae06f7e774a9990d550ce1fa623d7606db (patch) | |
| tree | 1b47320b4f950b0096397ae02f85903bbdaa2502 /src/backend.c | |
| parent | 803b84402927173144b610eeb01362beef165913 (diff) | |
| download | slapi-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.c | 14 |
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); |
