| |
@@ -988,9 +988,10 @@
|
| |
"----------> %s [%s]\n", DNA_TYPE, entry->types[i]);
|
| |
}
|
| |
|
| |
- value = (char *)slapi_entry_attr_get_ref(e, DNA_NEXTVAL);
|
| |
+ value = slapi_entry_attr_get_charptr(e, DNA_NEXTVAL);
|
| |
if (value) {
|
| |
entry->nextval = strtoull(value, 0, 0);
|
| |
+ slapi_ch_free_string(&value);
|
| |
} else {
|
| |
slapi_log_err(SLAPI_LOG_ERR, DNA_PLUGIN_SUBSYSTEM,
|
| |
"dna_parse_config_entry - The %s config "
|
| |
@@ -1023,9 +1024,10 @@
|
| |
entry->interval = 1;
|
| |
|
| |
#ifdef DNA_ENABLE_INTERVAL
|
| |
- value = (char *)slapi_entry_attr_get_ref(e, DNA_INTERVAL);
|
| |
+ value = slapi_entry_attr_get_charptr(e, DNA_INTERVAL);
|
| |
if (value) {
|
| |
entry->interval = strtoull(value, 0, 0);
|
| |
+ slapi_ch_free_string(&value);
|
| |
}
|
| |
|
| |
slapi_log_err(SLAPI_LOG_CONFIG, DNA_PLUGIN_SUBSYSTEM,
|
| |
@@ -1121,9 +1123,10 @@
|
| |
|
| |
/* optional, if not specified set -1 which is converted to the max unsigned
|
| |
* value */
|
| |
- value = (char *)slapi_entry_attr_get_ref(e, DNA_MAXVAL);
|
| |
+ value = slapi_entry_attr_get_charptr(e, DNA_MAXVAL);
|
| |
if (value) {
|
| |
entry->maxval = strtoull(value, 0, 0);
|
| |
+ slapi_ch_free_string(&value);
|
| |
} else {
|
| |
entry->maxval = -1;
|
| |
}
|
| |
@@ -1246,7 +1249,7 @@
|
| |
entry->shared_cfg_base);
|
| |
}
|
| |
|
| |
- value = (char *)slapi_entry_attr_get_ref(e, DNA_THRESHOLD);
|
| |
+ value = slapi_entry_attr_get_charptr(e, DNA_THRESHOLD);
|
| |
if (value) {
|
| |
entry->threshold = strtoull(value, 0, 0);
|
| |
|
| |
@@ -1258,6 +1261,8 @@
|
| |
slapi_log_err(SLAPI_LOG_ERR, DNA_PLUGIN_SUBSYSTEM,
|
| |
"----------> %s too low, setting to [%s]\n", DNA_THRESHOLD, value);
|
| |
}
|
| |
+
|
| |
+ slapi_ch_free_string(&value);
|
| |
} else {
|
| |
entry->threshold = 1;
|
| |
}
|
| |
@@ -1266,9 +1271,10 @@
|
| |
"dna_parse_config_entry - %s [%" PRIu64 "]\n", DNA_THRESHOLD,
|
| |
entry->threshold);
|
| |
|
| |
- value = (char *)slapi_entry_attr_get_ref(e, DNA_RANGE_REQUEST_TIMEOUT);
|
| |
+ value = slapi_entry_attr_get_charptr(e, DNA_RANGE_REQUEST_TIMEOUT);
|
| |
if (value) {
|
| |
entry->timeout = strtoull(value, 0, 0);
|
| |
+ slapi_ch_free_string(&value);
|
| |
} else {
|
| |
entry->timeout = DNA_DEFAULT_TIMEOUT;
|
| |
}
|
| |
@@ -1277,7 +1283,7 @@
|
| |
"dna_parse_config_entry - %s [%" PRIu64 "]\n", DNA_RANGE_REQUEST_TIMEOUT,
|
| |
entry->timeout);
|
| |
|
| |
- value = (char *)slapi_entry_attr_get_ref(e, DNA_NEXT_RANGE);
|
| |
+ value = slapi_entry_attr_get_charptr(e, DNA_NEXT_RANGE);
|
| |
if (value) {
|
| |
char *p = NULL;
|
| |
|
| |
@@ -1323,6 +1329,8 @@
|
| |
DNA_NEXT_RANGE, entry->dn);
|
| |
ret = DNA_FAILURE;
|
| |
}
|
| |
+
|
| |
+ slapi_ch_free_string(&value);
|
| |
}
|
| |
|
| |
/* If we were only called to validate config, we can
|
| |
@@ -2287,7 +2295,7 @@
|
| |
int multitype = 0;
|
| |
int result, status;
|
| |
PRUint64 tmpval, sval, i;
|
| |
- const char *strval = NULL;
|
| |
+ char *strval = NULL;
|
| |
|
| |
/* check if the config is already out of range */
|
| |
if (config_entry->nextval > config_entry->maxval) {
|
| |
@@ -2411,7 +2419,7 @@
|
| |
* type from the list of types directly. */
|
| |
sval = 0;
|
| |
for (i = 0; NULL != entries[i]; i++) {
|
| |
- strval = slapi_entry_attr_get_ref(entries[i], config_entry->types[0]);
|
| |
+ strval = slapi_entry_attr_get_charptr(entries[i], config_entry->types[0]);
|
| |
errno = 0;
|
| |
sval = strtoull(strval, 0, 0);
|
| |
if (errno) {
|
| |
@@ -2419,6 +2427,7 @@
|
| |
status = LDAP_OPERATIONS_ERROR;
|
| |
goto cleanup;
|
| |
}
|
| |
+ slapi_ch_free_string(&strval);
|
| |
|
| |
if (tmpval != sval)
|
| |
break;
|
| |
@@ -2444,6 +2453,7 @@
|
| |
|
| |
cleanup:
|
| |
slapi_ch_free_string(&filter);
|
| |
+ slapi_ch_free_string(&strval);
|
| |
slapi_free_search_results_internal(pb);
|
| |
slapi_pblock_destroy(pb);
|
| |
|
| |
@@ -2964,7 +2974,7 @@
|
| |
char *attrs[6];
|
| |
char *filter = NULL;
|
| |
char *bind_cred = NULL;
|
| |
- const char *transport = NULL;
|
| |
+ char *transport = NULL;
|
| |
Slapi_Entry **entries = NULL;
|
| |
int ret = LDAP_OPERATIONS_ERROR;
|
| |
|
| |
@@ -3049,7 +3059,7 @@
|
| |
*bind_dn = slapi_entry_attr_get_charptr(entries[0], DNA_REPL_BIND_DN);
|
| |
*bind_method = slapi_entry_attr_get_charptr(entries[0], DNA_REPL_BIND_METHOD);
|
| |
bind_cred = slapi_entry_attr_get_charptr(entries[0], DNA_REPL_CREDS);
|
| |
- transport = slapi_entry_attr_get_ref(entries[0], DNA_REPL_TRANSPORT);
|
| |
+ transport = slapi_entry_attr_get_charptr(entries[0], DNA_REPL_TRANSPORT);
|
| |
*port = slapi_entry_attr_get_int(entries[0], DNA_REPL_PORT);
|
| |
|
| |
/* Check if we should use SSL */
|
| |
@@ -3106,10 +3116,11 @@
|
| |
ret = 0;
|
| |
|
| |
bail:
|
| |
- slapi_ch_free_string(&bind_cred);
|
| |
+ slapi_ch_free_string(&transport);
|
| |
slapi_ch_free_string(&filter);
|
| |
slapi_sdn_free(&range_sdn);
|
| |
slapi_ch_free_string(&replica_dn);
|
| |
+ slapi_ch_free_string(&bind_cred);
|
| |
slapi_free_search_results_internal(pb);
|
| |
slapi_pblock_destroy(pb);
|
| |
|
| |
@@ -3468,21 +3479,24 @@
|
| |
* for types where the magic value is set. We do not
|
| |
* generate a value for missing types. */
|
| |
for (i = 0; config_entry->types && config_entry->types[i]; i++) {
|
| |
- value = (char *)slapi_entry_attr_get_ref(e, config_entry->types[i]);
|
| |
+ value = slapi_entry_attr_get_charptr(e, config_entry->types[i]);
|
| |
if (value) {
|
| |
if (config_entry->generate == NULL || !slapi_UTF8CASECMP(config_entry->generate, value)) {
|
| |
slapi_ch_array_add(&types_to_generate, slapi_ch_strdup(config_entry->types[i]));
|
| |
}
|
| |
+ slapi_ch_free_string(&value);
|
| |
}
|
| |
}
|
| |
} else {
|
| |
/* For a single type range, we generate the value if
|
| |
* the magic value is set or if the type is missing. */
|
| |
- value = (char *)slapi_entry_attr_get_ref(e, config_entry->types[0]);
|
| |
+ value = slapi_entry_attr_get_charptr(e, config_entry->types[0]);
|
| |
+
|
| |
if ((config_entry->generate == NULL) || (0 == value) ||
|
| |
(value && !slapi_UTF8CASECMP(config_entry->generate, value))) {
|
| |
slapi_ch_array_add(&types_to_generate, slapi_ch_strdup(config_entry->types[0]));
|
| |
}
|
| |
+ slapi_ch_free_string(&value);
|
| |
}
|
| |
|
| |
if (types_to_generate && types_to_generate[0]) {
|
| |
@@ -4139,24 +4153,28 @@
|
| |
* for types where the magic value is set. We do not
|
| |
* generate a value for missing types. */
|
| |
for (i = 0; config_entry->types && config_entry->types[i]; i++) {
|
| |
- value = (char *)slapi_entry_attr_get_ref(e, config_entry->types[i]);
|
| |
+ value = slapi_entry_attr_get_charptr(e, config_entry->types[i]);
|
| |
+
|
| |
if (value && !slapi_UTF8CASECMP(value, DNA_NEEDS_UPDATE)) {
|
| |
slapi_ch_array_add(&types_to_generate,
|
| |
slapi_ch_strdup(config_entry->types[i]));
|
| |
/* Need to remove DNA_NEEDS_UPDATE */
|
| |
slapi_entry_attr_delete(e, config_entry->types[i]);
|
| |
}
|
| |
+ slapi_ch_free_string(&value);
|
| |
}
|
| |
} else {
|
| |
/* For a single type range, we generate the value if
|
| |
* the magic value is set or if the type is missing. */
|
| |
- value = (char *)slapi_entry_attr_get_ref(e, config_entry->types[0]);
|
| |
+ value = slapi_entry_attr_get_charptr(e, config_entry->types[0]);
|
| |
+
|
| |
if (0 == value || (value && !slapi_UTF8CASECMP(value, DNA_NEEDS_UPDATE))) {
|
| |
slapi_ch_array_add(&types_to_generate,
|
| |
slapi_ch_strdup(config_entry->types[0]));
|
| |
/* Need to remove DNA_NEEDS_UPDATE */
|
| |
slapi_entry_attr_delete(e, config_entry->types[0]);
|
| |
}
|
| |
+ slapi_ch_free_string(&value);
|
| |
}
|
| |
} else {
|
| |
/* check mods for DNA_NEEDS_UPDATE*/
|
| |
I think there is a risk of double free in the later call 'dash_guid' that can call slapi_ch_free_string