summaryrefslogtreecommitdiffstats
path: root/ldap/servers/slapd
Commit message (Collapse)AuthorAgeFilesLines
* Bug 633168 - Share backend dbEnv with the replication changelogNoriko Hosoi2010-09-1316-262/+721
| | | | | | | | | | | | | | | | | | | | | | | | | | https://bugzilla.redhat.com/show_bug.cgi?id=633168 Description: * cl5_api.c, cl5_api.h - fetches dbEnv from backend using slapi_back_get_info. - unused macros and DB helper functions and APIs are removed. * cl5_config.c - local changelog DB related config parameters are removed. * Added SLAPI_PLUGIN_BE_PRE_CLOSE_FN and SLAPI_PLUGIN_BE_POST_OPEN_FN to close changelog DB before dbEnv is closed and to open changelog DB after dbEnv is opened, respectively. * Added slapi APIs slapi_back_get_info and slapi_back_set_info to get/set the backend info. * back-ldbm - db2bak[.pl] and bak2db[.pl] backs up and restores the database files including changelog db. - changelog dir is backed up in <backupdir>/.repl_changelog_backup. - underlying implementation ldbm_back_get_info for slapi_back_get_info is added. * Added an upgrade script 81changelog.pl See also: http://directory.fedoraproject.org/wiki/Move_changelog
* Bug 630091 - (cov#15582) Free of uninitialized pointer in attr_index_config()Nathan Kinder2010-09-131-1/+1
| | | | | | In attr_index_config(), if argc or argv are NULL, we jump to the done label. We then try to free attrs, but it was never initialized. We need to initialize attrs to NULL.
* Bug 630091 - (cov#15519) Initialize bervals in search_easter_egg()Nathan Kinder2010-09-131-2/+2
| | | | | In search_easter_egg(), we need to initialize the bervals before we pass them to slapi_ldif_parse_line().
* Bug 630091 - (cov#15516,15517) Initialize pointers before attempting to freeNathan Kinder2010-09-131-1/+2
| | | | | | | | If we encounter an error early in ldbm_instance_index_config_modify_callback(), we jump to the out label where we try to free origMatchingRules, but it may not be initialized. The same is true for origIndexTypes. We need to initialize these pointers to NULL.
* Bug 630091 - (cov#15515) Use of uninitialized array in index config codeNathan Kinder2010-09-131-1/+1
| | | | | | | | If we encounter an error early in ldbm_instance_index_config_modify_callback(), we jump to the out label where we free each element of the arglist array. This can happen without initializing the array. We need to initialize arglist before there is any chance to jump to the out label.
* Bug 630091 - (cov#15514) Initialize DBT in entryrdn_get_parent()Nathan Kinder2010-09-131-1/+3
| | | | | | | | In entryrdn_get_parent(), there is a DBT structure that we can use without initializing. If we goto the bail label, we try to free data.data, but data was never initialized. We should clear the memory used by data in the beginning of the function before we have an opportunity to goto bail.
* Bug 630091 - (cov#15513) Fix usage of uninitialized bervalsNathan Kinder2010-09-131-1/+2
| | | | | | We use some uninitialized bervals when the backend code calls slapi_ldif_parse_line(). We should be initializing the bervals to be empty.
* Bug 630091 - (cov#15512) Fix usage of uninitialized bervalsNathan Kinder2010-09-101-2/+2
| | | | | | When the server is built against MozLDAP, we use some uninitialized bervals when the backend code calls slapi_ldif_parse_line(). We should be initializing the bervals to be empty.
* Bug 630094 - (cov#15581) Add missing breaks in agt_mopen_stats()Nathan Kinder2010-09-091-1/+4
| | | | | | | | | | | The switch statements in agt_mopen_stats() are missing breaks to prevent falling through to the next case when the stats file is opened in read-only mode. This looks like it causes the stats file to get opened a second time in read/write mode when ldap-agent attempts to open it in read-only mode. This may leak file descriptors in ldap-agent. We need to add the proper break statements.
* Bug 630094 - (cov#15520) Fix unreachable code issue if perfctrs codeNathan Kinder2010-09-091-3/+4
| | | | | | | | | | | | | The final frees of priv->memory and priv will never be reached since the function returns prior to these calls. It looks as if an "error:" label was removed at some point, as the WIN32 code in this function has goto statements using that label, but the label is not defined. The fix is to add the "error:" label in ifdef blocks for WIN32 that calls the free of priv. The free of priv->memory is not necessary since WIN32 doesn't use it and non-WIN32 builds don't use the error label at all.
* Bug 630094 - (cov#15459) Remove NULL check for srdn in ldif2ldbm codeNathan Kinder2010-09-091-1/+1
| | | | | | | | | | | In the call to slapi_log_error(), we are guaranteed that srdn is NULL if we are checking it for NULL due to the way the conditions are nested. The only time we check if srdn is NULL is if be is non-NULL, and the if condition guarantees that either be or srdn are NULL. We can just use the string "srdn" in our log message if be is non-NULL.
* Bug 630094 - (cov#15458) Fix deadcode issue in moddn codeNathan Kinder2010-09-091-1/+1
| | | | | | | | | | | In the moddn code that renames child entries, the for loop used to rename the children can never be executed. Part of the condition is that retval is 0, but retval will always be -1 the first time we hit this loop. This only happens with subtree rename off, but it should still be fixed. The fix is to set retval to 0 at the prior to checking the condition the first time.
* Bug 630094 - (cov#15457) Remove deadcode in import codeNathan Kinder2010-09-091-4/+0
| | | | | | | | The skipit variable is set to zero shortly before we check if it is 0 in an if condition. This if block can be removed since it will never be hit. The entry that was being freed in the if block is already removed earlier in the function if skipit was non-0 prior to resetting skipit to 0.
* Bug 630094 - (cov#15456) Remove NULL check for srdn in import codeNathan Kinder2010-09-091-1/+1
| | | | | | | | | | | In the call to slapi_log_error(), we are guaranteed that srdn is NULL if we are checking it for NULL due to the way the conditions are nested. The only time we check if srdn is NULL is if inst is non-NULL, and the if condition guarantees that either inst or srdn are NULL. We can just use the string "srdn" in our log message if inst is non-NULL.
* Bug 630094 - (cov#15455) Remove deadcode in attr_index_config()Nathan Kinder2010-09-091-128/+128
| | | | | | | | | If the index types (argv[1]) are not specified, attr_index_config() bails. We can remove some dead code where we check if "argc == 1" later in the function since that case can never happen. Additionally, we need to check if argc is 0, or if argv is NULL before attempting to parse the list of attributes to be indexed.
* Bug 630094 - (cov#15454) Fix deadcode issue in mapping tree codeNathan Kinder2010-09-091-1/+2
| | | | | | | | | | There is no chance for next_node to be anything other than NULL in the final return statement due to the return in the "if (next_node)" block immediately before the final return. We can remove the return inside of the "if (next_node)" block since the final return statement already deals with returning the proper value if next_node is non-NULL.
* Bug 630094 - (cov#11818) Fix unreachable return in snmp subagentNathan Kinder2010-09-091-17/+33
| | | | | | | | | | | | The return statement at the end of agt_mopen_stats() is unreachable according to coverity. This return was removed before to fix the coverity defect, but it was added back to fix a compiler warning. We can satisfy both the compiler and coverity by adding a rc variable to hold the return code. We can then return rc at the end of the function. This also allows us to clean up all of the return calls in this function by having all of them set rc and jump to a label at the function end.
* Bug 630090 - (cov#15445) Fix illegal free in archive codeNathan Kinder2010-09-091-1/+2
| | | | | | | | | | | The directory variable points to a dynamically allocated string returned by rel2abspath(). We are changing directory to point to a string constant if we are unable to parse the directory. This not only leaks memory, but it can cause us to attempt to free the string constant. We should free the string before we overwrite it, and we should dynamically allocate a new string instead of using a string constant.
* Bug 630096 - (cov#15447) - Check return value of idl_append_extend()Nathan Kinder2010-09-081-2/+13
| | | | | | | | | | | We should check the return type of idl_append_extend(), though it does not seem possible that the return type will be anything other than 0. The only time idl_append_extend() returns anything other than 0 is when it is unable to allocate memory. Since the underlying allocation function is slapi_ch_calloc(), the server will just exit if it runs out of memory, which means we will never return up through idl_append_extend(). The right thing to do from a code standpoint is to still check for the return value though.
* Bug 630096 - (cov#15448) Check return value of cache_replace()Nathan Kinder2010-09-081-1/+6
| | | | | | | | | | | We need to check the return value of cache_replace() in id2entry_add_ext(). The only possible error that can be returned is when the entry we are trying to replace is not found in the cache. This should not occur since we are told that the entry already exists by CACHE_ADD() just prior to this call. If we run into this situation, we will just log an error without adding the entry to the cache. This shouldn't be a big deal since the entry will get added to the cache next time it is accessed.
* Bug 630096 - (cov#15449,15450) Check return value of stat()Nathan Kinder2010-09-082-4/+8
| | | | | | We were not checking the return value of stat() before attempting to access the structure that stat fille in in the protect_db code. This patch checks the return value first.
* Bug 630093 - (cov#15518) Need to intialize fd in ldbm2ldif codeNathan Kinder2010-09-081-4/+3
| | | | | | | | | | | Currently, the ldbm_back_ldbm2ldif() function could bail due to an error before fd is set. We then attempt to close the file that fd refers to. We should initialize fd to STDOUT_FILENUM, as we skip calling close() if fd is set to STDOUT_FILENUM. Additionally, I noticed that we could call close() when fd is negative or if it is STDERR or STDIN. I fixed this so close() is not called in those cases.
* Have to explicitly set protocol version to 3Rich Megginson2010-09-031-0/+5
| | | | | openldap requires that the protocol version be explicitly set to 3 mozldap defaults to 3, but it doesn't hurt to set it again
* Bug 630098 - fix coverity Defect Type: Code maintainability issuesNathan Kinder2010-09-031-2/+0
| | | | | (cov#15521) The oldndn variable was unused in the dncache_replace() function. This patch removes the unused variable.
* Bug 630098 - fix coverity Defect Type: Code maintainability issuesNathan Kinder2010-09-031-2/+0
| | | | | (cov#15521) The newndn variable was unused in the dncache_replace() function. This patch removes the unused variable.
* Bug 629710 - escape_string does not check '\<HEX><HEX>'Noriko Hosoi2010-09-021-16/+30
| | | | | | | | | https://bugzilla.redhat.com/show_bug.cgi?id=629710 Resolves: 629710 Description: do_escape_string (core of escape_string) converts '\\ (backslash)' to '\5C' even if the following 2 characters are hex digits. That is, the character is already escaped. This patch checks the case and if it is, it does not escape it further.
* Bug 627738 - The cn=monitor statistics entries for the dnentry cacheNoriko Hosoi2010-09-021-3/+4
| | | | | | | | | | | | | do not change or change very rarely https://bugzilla.redhat.com/show_bug.cgi?id=627738 Description: Change made in this commit: cc36301a7cae6737d9f8a0e53bed653a52130a1d for the following bug introduced a missing-cache-return bug: id2entry_add_ext replaces an dn instance in the dn cache even if the DN value is identical. Replace it only when they don't match. Thanks to andrey.ivanov@polytechnique.fr for finding it out: https://bugzilla.redhat.com/show_bug.cgi?id=627738#c5
* fix compiler warnings - unused vars/funcs, invalid castsRich Megginson2010-09-0110-22/+19
| | | | | | | | | This commit fixes many compiler warnings, mostly for things like unused variables, functions, goto labels. One place was using csngen_free instead of csn_free. A couple of places were using casts incorrectly, and several places needed some casts added. Tested on: RHEL5 x86_64, Fedora 14 x86_64 Reviewed by: nkinder (Thanks!)
* pass the string copy to slapi_dn_normalize_originalRich Megginson2010-09-011-2/+2
| | | | | | slapi_dn_normalize_original can modify the argument string, so we cannot pass in a const char *rawdn to that function - instead, pass in a copy created by slapi_ch_strdup
* use slapi_pblock_set to set the ldap result code for the be postop pluginsRich Megginson2010-09-012-2/+2
| | | | | use slapi_pblock_set to set the ldap result code for the be postop plugins instead of slapi_pblock_get
* Bug 612264 - ACI issue with (targetattr='userPassword')Nathan Kinder2010-09-011-5/+10
| | | | | | | | | | | | | | If an ACI has a targetattr of userPassword and uses the USERDN keyword, the ACI may not be evaluated correctly for password change operations. This is caused by the fact that we use a dummy target entry to check if the pasword change is allowed early in the operation. This dummy entry will not have any attributes that the ACI may use. The fix is to actually fetch the target entry with all of it's attributes. We still create a dummy entry if the target doesn't exist to prevent returning a no such entry error when we should be returning an access denied or insufficient access error.
* DN normalizer should check the invalid typeNoriko Hosoi2010-08-311-0/+4
| | | | | | | File: ldap/servers/slapd/dn.c Description: slapi_dn_normalize_ext failed to check a typical invald DN (e.g., "bogus,dc=example,dc=com"), in which RDN does not have the type=value format. The problem is fixed.
* implement slapi_ldap_explode_dn and slapi_ldap_explode_rdnRich Megginson2010-08-3111-33/+297
| | | | | | | | | | | | The DS has some problems with the openldap versions of these functions: 1) They are deprecated - should use the str2[r]dn and [r]dn2str and the bv versions of those functions instead 2) They escape utf-8 and other values in the strings - the mozldap functions do not do this 3) They handle double quoted strings, but they remove the quotes - our code expects the quotes to be left in place Until we fix our DN handling, and get rid of the double quoted DNs, we just use the mozldap versions of these functions.
* check src < *out only; only check for \nspace if src < *out - 2Rich Megginson2010-08-311-2/+2
| | | | | | | *out will never be NULL here, so we only need to check that src < *out as the loop condition when looking for a continuation line, make sure there are two characters in *out to check
* move the out pointer back if continuation lines were removedRich Megginson2010-08-311-0/+1
| | | | | | when putting ldif data with the no wrap option, if we removed some continuation lines, we have to move the output data pointer back since the continuation line markers are removed in place
* convert mozldap host list to openldap uri listRich Megginson2010-08-311-4/+77
| | | | | | | | mozldap accepts hostnames in the form host1[:port1] ... hostN[:portN] in the ldap_init argument and in ldap urls/uris. DS code uses ldap_initialize() which takes a list of uris in the form ldap[s]://host1[:port1]/ ldap[s]://host2[:port2]/ ... We have to convert the host:port list into a list of LDAP uris
* slapi_ldap_url_parse must handle multiple host:port in urlRich Megginson2010-08-311-5/+94
| | | | | | | mozldap supports a non-standard URL extension which allows multiple host:port combinations - openldap does not support this - fake out openldap by converting spaces to %20 and all but the last colon to %3A before calling ldap_url_parse, then unescape ludp->lud_host before returning
* do not terminate unwrapped LDIF line with another newlineRich Megginson2010-08-311-1/+0
| | | | | The function ldif_sput already terminates the line with a newline character - we do not need to add another one when unwrapping a wrapped line.
* openldap_read_function needs to set EWOULDBLOCK if the buffer is emptyRich Megginson2010-08-311-0/+8
| | | | | | If the openldap_read_function has returned all of the buffered data, it needs to set errno to EWOULDBLOCK to let the code know that it needs to read more data into the buffer.
* have to use LDAP_OPT_X_TLS_NEVER to defeat cert hostname checkingRich Megginson2010-08-311-1/+1
| | | | | | | Even though the ldap.conf man page is not really clear about this, looking at the code in libraries/libldap/tls2.c:ldap_int_tls_start() if you don't specify LDAP_OPT_X_TLS_REQUIRE_CERT as LDAP_OPT_X_TLS_NEVER it will check the hostname
* fix the url_parse logic when looking for a missing suffix DNRich Megginson2010-08-311-1/+4
| | | | | | The logic looking for a missing suffix DN in a parsed URL was incorrect. In addition, since passthru requires a suffix DN, pass the require_dn flag.
* ber_printf 'o' cannot handle NULL bv_valRich Megginson2010-08-311-2/+2
| | | | | | The value passed to the char * argument to ber_printf 'o' must not be a NULL, even if the bv_len argument is 0. An empty string "" must be passed instead.
* use strcasecmp with ptype and type->bv_valRich Megginson2010-08-311-1/+1
| | | | both ptype and type->bv_val are properly null terminated strings
* fix some compiler warningsRich Megginson2010-08-312-1/+1
|
* document slapi wrappers for openldap/mozldap functions that differRich Megginson2010-08-315-13/+101
| | | | | | | There are slapi wrappers that hide differences between the openldap and mozldap ldap and ldif API code. These are now doxygen documented. Reviewed by: nkinder (Thanks!) Platforms tested: Fedora 14 (rawhide)
* use the mozldap versions of the proxy auth control create functionRich Megginson2010-08-311-4/+9
| | | | | | Since these functions are present in mozldap, just use them directly Reviewed by: nkinder (Thanks!) Platforms tested: Fedora 14 (rawhide)
* port client tools to use openldap APIRich Megginson2010-08-312-14/+71
| | | | | | | | | There are some differences between the mozldap and the openldap apis: openldap has deprecated ldap_init in favor of ldap_initialize openldap has deprecated the regular ldap op functions in favor of their _ext alternatives Reviewed by: nkinder (Thanks!) Platforms tested: Fedora 14 (rawhide)
* openldap - add support for missing controls, add ldif api, fix NSS usageRich Megginson2010-08-317-225/+336
| | | | | | | | | | | Added proxy auth control creation - mozldap has a function to do that but not openldap Do not use mozldap filter create function - just create one using slapi_smprintf Fix usage of TLS/SSL with new NSS functionality Created ldif parse wrapper - changed code to use it Reviewed by: nkinder (Thanks!) Platforms tested: Fedora 14 (rawhide)
* fix memleak in ldbm_config_read_instance_entriesRich Megginson2010-08-311-0/+1
| | | | | | need to free basedn after use by the internal search Reviewed by: nkinder (Thanks!) Platforms tested: Fedora 14 (rawhide)
* openldap - ldap_url_parse_ext is not part of the public apiRich Megginson2010-08-311-1/+1
| | | | | | | even though AC_CHECK_LIB finds ldap_url_parse_ext, that function is not part of the public api Reviewed by: nkinder (Thanks!) Platforms tested: Fedora 14 (rawhide)