summaryrefslogtreecommitdiff
path: root/source3/lib/smbldap.c
diff options
context:
space:
mode:
authorJim McDonough <jmcd@samba.org>2004-03-11 18:10:08 +0000
committerJim McDonough <jmcd@samba.org>2004-03-11 18:10:08 +0000
commit77b180d401b1f431dd550a8498b83bdb24cd7325 (patch)
tree01bf5a600170ce78619bad131b481e6472b8c2d9 /source3/lib/smbldap.c
parent686fcfa61e5e7f0bc6adaa6dc0af2a269c5592a8 (diff)
downloadsamba-77b180d401b1f431dd550a8498b83bdb24cd7325.tar.gz
samba-77b180d401b1f431dd550a8498b83bdb24cd7325.tar.bz2
samba-77b180d401b1f431dd550a8498b83bdb24cd7325.zip
Merge from 3.0. Fix munged dial in pdb_ldap
(This used to be commit 46544e957f00f71e3a49e3d90cd88b4cf1b33408)
Diffstat (limited to 'source3/lib/smbldap.c')
-rw-r--r--source3/lib/smbldap.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/source3/lib/smbldap.c b/source3/lib/smbldap.c
index 3bd8b12f2d..1c3829c1ef 100644
--- a/source3/lib/smbldap.c
+++ b/source3/lib/smbldap.c
@@ -290,7 +290,8 @@ static BOOL fetch_ldap_pw(char **dn, char** pw)
******************************************************************/
BOOL smbldap_get_single_attribute (LDAP * ldap_struct, LDAPMessage * entry,
- const char *attribute, pstring value)
+ const char *attribute, char *value,
+ int max_len)
{
char **values;
@@ -305,7 +306,7 @@ static BOOL fetch_ldap_pw(char **dn, char** pw)
return False;
}
- if (convert_string(CH_UTF8, CH_UNIX,values[0], -1, value, sizeof(pstring)) == (size_t)-1) {
+ if (convert_string(CH_UTF8, CH_UNIX,values[0], -1, value, max_len) == (size_t)-1) {
DEBUG(1, ("smbldap_get_single_attribute: string conversion of [%s] = [%s] failed!\n",
attribute, values[0]));
ldap_value_free(values);
@@ -319,6 +320,14 @@ static BOOL fetch_ldap_pw(char **dn, char** pw)
return True;
}
+ BOOL smbldap_get_single_pstring (LDAP * ldap_struct, LDAPMessage * entry,
+ const char *attribute, pstring value)
+{
+ return smbldap_get_single_attribute(ldap_struct, entry,
+ attribute, value,
+ sizeof(pstring));
+}
+
/************************************************************************
Routine to manage the LDAPMod structure array
manage memory used by the array, by each struct, and values
@@ -415,11 +424,11 @@ static BOOL fetch_ldap_pw(char **dn, char** pw)
LDAPMod ***mods,
const char *attribute, const char *newval)
{
- pstring oldval;
+ char oldval[2048]; /* current largest allowed value is mungeddial */
BOOL existed;
if (existing != NULL) {
- existed = smbldap_get_single_attribute(ldap_struct, existing, attribute, oldval);
+ existed = smbldap_get_single_attribute(ldap_struct, existing, attribute, oldval, sizeof(oldval));
} else {
existed = False;
*oldval = '\0';