ldap_common.c revision 087219897d8b8a92d7d33da3fa30883d40ad8cdb
98N/A along with this program. If not, see <http://www.gnu.org/licenses/>.
98N/A#include "providers/ldap/ldap_common.h"
493N/A#include "providers/fail_over.h"
98N/A#include "providers/ldap/sdap_async_private.h"
970N/A#include "providers/krb5/krb5_common.h"
970N/A#include "db/sysdb_sudo.h"
970N/A#include "db/sysdb_services.h"
970N/A#include "db/sysdb_autofs.h"
970N/A#include "util/sss_krb5.h"
98N/A#include "util/crypto/sss_crypto.h"
{ "ldap_user_nds_login_expiration_time", "loginExpirationTime", SYSDB_NDS_LOGIN_EXPIRATION_TIME, NULL },
{ "ldap_user_nds_login_allowed_time_map", "loginAllowedTimeMap", SYSDB_NDS_LOGIN_ALLOWED_TIME_MAP, NULL },
{ "ldap_user_nds_login_expiration_time", "loginExpirationTime", SYSDB_NDS_LOGIN_EXPIRATION_TIME, NULL },
{ "ldap_user_nds_login_allowed_time_map", "loginAllowedTimeMap", SYSDB_NDS_LOGIN_ALLOWED_TIME_MAP, NULL },
const char *conf_path,
char *schema;
const char *search_base;
const char *pwd_policy;
int ret;
const char *ldap_deref;
int ldap_deref_val;
const char *authtok_type;
char *cleartext;
goto done;
goto done;
search_base_options[o])));
goto done;
goto done;
goto done;
goto done;
goto done;
goto done;
#ifndef HAVE_LDAP_CONNCB
bool ldap_referrals;
if (ldap_referrals) {
goto done;
goto done;
goto done;
goto done;
goto done;
goto done;
goto done;
return EINVAL;
&cleartext);
return ret;
return ret;
return ret;
done:
return ret;
const char *conf_path,
const char *search_base;
int ret;
return ret;
return ret;
return ret;
return EOK;
const char *conf_path,
const char *search_base;
int ret;
return ret;
return ENOENT;
return ret;
case SDAP_SCHEMA_RFC2307:
case SDAP_SCHEMA_RFC2307BIS:
case SDAP_SCHEMA_IPA_V1:
case SDAP_SCHEMA_AD:
return EINVAL;
return ret;
return ret;
return EOK;
const char *class_name;
char *unparsed_base;
switch (class) {
case SDAP_SEARCH_BASE:
case SDAP_USER_SEARCH_BASE:
case SDAP_GROUP_SEARCH_BASE:
case SDAP_SUDO_SEARCH_BASE:
case SDAP_SERVICE_SEARCH_BASE:
case SDAP_AUTOFS_SEARCH_BASE:
const char *unparsed_base,
const char *class_name,
const char *old_filter,
char **split_bases;
char *filter;
int count;
if (!tmp_ctx) {
goto done;
if (!ldb) {
goto done;
goto done;
if (!search_bases) {
goto done;
if (!search_bases[0]) {
goto done;
goto done;
if (!ldn) {
goto done;
goto done;
if (!search_bases) {
goto done;
struct sdap_search_base);
if (!search_bases[i]) {
goto done;
goto done;
if (!ldn) {
goto done;
split_bases[c]));
goto done;
split_bases[c]);
goto done;
goto done;
if (!filter) {
goto done;
if(!tree) {
goto done;
filter);
done:
return ret;
int delay;
bool has_enumerated;
return ret;
if (has_enumerated) {
if (delay == 0) {
return EOK;
return ret;
const char *tmp;
const char *srv_name;
char *new_uri;
if (!service) {
if (!srvaddr) {
if (!tmp) {
if (!new_uri) {
int signum,
int count,
void *siginfo,
void *private_data)
int ret;
const char *realm)
char *sig_realm;
return ENOMEM;
return ENOMEM;
return EOK;
int ret;
struct remove_info_files_ctx);
const char *realm,
const char *service_name)
int ret;
return ENOMEM;
goto done;
goto done;
done:
return ret;
if (krberr) {
goto done;
if (krberr) {
goto done;
if (!realm) {
goto done;
done:
return realm;
int ret;
const char *krb5_servers;
const char *krb5_realm;
const char *krb5_opt_realm;
goto done;
goto done;
goto done;
goto done;
goto done;
goto done;
done:
return ret;
char *srv_user_data;
int ret;
if (!tmp_ctx) {
return ENOMEM;
if (!service) {
goto done;
goto done;
goto done;
if (!urls) {
goto done;
for (i = 0; list[i]; i++) {
if (!dns_service_name) {
service_name));
goto done;
if (!srv_user_data) {
goto done;
if (ret) {
goto done;
goto done;
list[i]));
if (ret) {
goto done;
goto done;
done:
return ret;
char *endptr;
return EOK;
errno = 0;
if (errno != 0) {
return errno;
return EINVAL;
return EINVAL;
return EOK;
const char *ldap_name,
char **sysdb_name)
size_t i;
for (i = 0; i < map_size; i++) {
if (i < map_size) {
if (!*sysdb_name) {
return ENOMEM;
return EOK;
const char **expected_attrs,
char ***missing_attrs)
size_t i, j, k;
char *sysdb_name;
return EINVAL;
if (!tmp_ctx) {
return ENOMEM;
if (!missing) {
goto done;
for (i = 0; i < attr_count; i++) {
expected_attrs[i],
&sysdb_name);
goto done;
done:
return ret;
const char *base_filter,
const char *extra_filter)
if (!extra_filter) {