summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/include/smbldap.h26
-rw-r--r--source3/passdb/pdb_nds.c12
2 files changed, 30 insertions, 8 deletions
diff --git a/source3/include/smbldap.h b/source3/include/smbldap.h
index b54b3f4325..df56f60bf3 100644
--- a/source3/include/smbldap.h
+++ b/source3/include/smbldap.h
@@ -22,6 +22,8 @@
#ifndef _SMBLDAP_H
#define _SMBLDAP_H
+struct smbldap_state;
+
#ifdef HAVE_LDAP
/* specify schema versions between 2.2. and 3.0 */
@@ -119,6 +121,10 @@ extern ATTRIB_MAP_ENTRY sidmap_attr_list[];
/* Function declarations -- not included in proto.h so we don't
have to worry about LDAP structure types */
+NTSTATUS smbldap_init(TALLOC_CTX *mem_ctx,
+ const char *location,
+ struct smbldap_state **smbldap_state);
+
const char* get_attr_key2string( ATTRIB_MAP_ENTRY table[], int key );
const char** get_attr_list( ATTRIB_MAP_ENTRY table[] );
void free_attr_list( const char **list );
@@ -131,6 +137,10 @@ BOOL smbldap_get_single_attribute (LDAP * ldap_struct, LDAPMessage * entry,
int max_len);
BOOL smbldap_get_single_pstring (LDAP * ldap_struct, LDAPMessage * entry,
const char *attribute, pstring value);
+char *smbldap_get_dn(LDAP *ld, LDAPMessage *entry);
+int smbldap_modify(struct smbldap_state *ldap_state,
+ const char *dn,
+ LDAPMod *attrs[]);
/**
* Struct to keep the state for all the ldap stuff
@@ -180,9 +190,21 @@ struct ldapsam_privates {
char *location;
};
-#endif /* HAVE_LDAP */
+/* Functions shared between pdb_ldap.c and pdb_nds.c. */
+NTSTATUS pdb_init_ldapsam_compat(PDB_CONTEXT *pdb_context,
+ PDB_METHODS **pdb_method,
+ const char *location);
+void private_data_free_fn(void **result);
+int ldapsam_search_suffix_by_name(struct ldapsam_privates *ldap_state,
+ const char *user,
+ LDAPMessage ** result,
+ const char **attr);
+NTSTATUS pdb_init_ldapsam(PDB_CONTEXT *pdb_context,
+ PDB_METHODS **pdb_method,
+ const char *location);
+const char** get_userattr_list( int schema_ver );
-struct smbldap_state;
+#endif /* HAVE_LDAP */
#define LDAP_CONNECT_DEFAULT_TIMEOUT 15
#define LDAP_PAGE_SIZE 1024
diff --git a/source3/passdb/pdb_nds.c b/source3/passdb/pdb_nds.c
index e2f3128fd5..0b1d39a81b 100644
--- a/source3/passdb/pdb_nds.c
+++ b/source3/passdb/pdb_nds.c
@@ -227,7 +227,7 @@ static int berDecodeLoginData(
size_t *retDataLen,
void *retData )
{
- int rc=0, err = 0;
+ int err = 0;
BerElement *replyBer = NULL;
char *retOctStr = NULL;
size_t retOctStrLen = 0;
@@ -248,7 +248,7 @@ static int berDecodeLoginData(
goto Cleanup;
}
- if( (rc = ber_scanf(replyBer, "{iis}", serverVersion, &err, retOctStr, &retOctStrLen)) != -1)
+ if(ber_scanf(replyBer, "{iis}", serverVersion, &err, retOctStr, &retOctStrLen) != -1)
{
if (*retDataLen >= retOctStrLen)
{
@@ -268,7 +268,7 @@ static int berDecodeLoginData(
}
else
{
- if( (rc = ber_scanf(replyBer, "{ii}", serverVersion, &err)) == -1)
+ if(ber_scanf(replyBer, "{ii}", serverVersion, &err) == -1)
{
if (!err)
{
@@ -663,7 +663,7 @@ Cleanup:
int pdb_nds_get_password(
struct smbldap_state *ldap_state,
char *object_dn,
- int *pwd_len,
+ size_t *pwd_len,
char *pwd )
{
LDAP *ld = ldap_state->ldap_struct;
@@ -757,7 +757,7 @@ static NTSTATUS pdb_nds_update_login_attempts(struct pdb_methods *methods,
LDAPMessage *entry = NULL;
const char **attr_list;
size_t pwd_len;
- uchar clear_text_pw[512];
+ char clear_text_pw[512];
const char *p = NULL;
LDAP *ld = NULL;
int ldap_port = 0;
@@ -800,7 +800,7 @@ static NTSTATUS pdb_nds_update_login_attempts(struct pdb_methods *methods,
got_clear_text_pw = True;
}
} else {
- generate_random_buffer(clear_text_pw, 24);
+ generate_random_buffer((unsigned char *)clear_text_pw, 24);
clear_text_pw[24] = '\0';
DEBUG(5,("pdb_nds_update_login_attempts: using random password %s\n", clear_text_pw));
}