svn commit: samba r25063 - in branches: SAMBA_3_0_25/source/nsswitch SAMBA_3_2/source/nsswitch SAMBA_3_2_0/source/nsswitch

idra at samba.org idra at samba.org
Mon Sep 10 19:14:23 GMT 2007


Author: idra
Date: 2007-09-10 19:14:22 +0000 (Mon, 10 Sep 2007)
New Revision: 25063

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=25063

Log:

Fix segfault in smbldp_set_creds when we want to use anonymous, the
code was not passing in the "anon" flag correctly and was passing
NULL pointers.



Modified:
   branches/SAMBA_3_0_25/source/nsswitch/idmap_ldap.c
   branches/SAMBA_3_2/source/nsswitch/idmap_ldap.c
   branches/SAMBA_3_2_0/source/nsswitch/idmap_ldap.c


Changeset:
Modified: branches/SAMBA_3_0_25/source/nsswitch/idmap_ldap.c
===================================================================
--- branches/SAMBA_3_0_25/source/nsswitch/idmap_ldap.c	2007-09-10 19:04:57 UTC (rev 25062)
+++ branches/SAMBA_3_0_25/source/nsswitch/idmap_ldap.c	2007-09-10 19:14:22 UTC (rev 25063)
@@ -78,6 +78,7 @@
 	char *secret = NULL;
 	const char *tmp = NULL;
 	char *user_dn = NULL;
+	bool anon = false;
 
 	/* assume anonymous if we don't have a specified user */
 
@@ -106,7 +107,7 @@
 		if (!fetch_ldap_pw(&user_dn, &secret)) {
 			DEBUG(2, ("get_credentials: Failed to lookup ldap "
 				  "bind creds. Using anonymous connection.\n"));
-			*dn = talloc_strdup(mem_ctx, "");
+			anon = true;
 		} else {
 			*dn = talloc_strdup(mem_ctx, user_dn);
 			SAFE_FREE( user_dn );
@@ -114,10 +115,10 @@
 		}
 	}
 
-	smbldap_set_creds(ldap_state, false, *dn, secret);
+	smbldap_set_creds(ldap_state, anon, *dn, secret);
 	ret = NT_STATUS_OK;
 
- done:
+done:
 	SAFE_FREE(secret);
 
 	return ret;

Modified: branches/SAMBA_3_2/source/nsswitch/idmap_ldap.c
===================================================================
--- branches/SAMBA_3_2/source/nsswitch/idmap_ldap.c	2007-09-10 19:04:57 UTC (rev 25062)
+++ branches/SAMBA_3_2/source/nsswitch/idmap_ldap.c	2007-09-10 19:14:22 UTC (rev 25063)
@@ -78,6 +78,7 @@
 	char *secret = NULL;
 	const char *tmp = NULL;
 	char *user_dn = NULL;
+	bool anon = false;
 
 	/* assume anonymous if we don't have a specified user */
 
@@ -106,7 +107,7 @@
 		if (!fetch_ldap_pw(&user_dn, &secret)) {
 			DEBUG(2, ("get_credentials: Failed to lookup ldap "
 				  "bind creds. Using anonymous connection.\n"));
-			*dn = talloc_strdup(mem_ctx, "");
+			anon = true;
 		} else {
 			*dn = talloc_strdup(mem_ctx, user_dn);
 			SAFE_FREE( user_dn );
@@ -114,10 +115,10 @@
 		}
 	}
 
-	smbldap_set_creds(ldap_state, false, *dn, secret);
+	smbldap_set_creds(ldap_state, anon, *dn, secret);
 	ret = NT_STATUS_OK;
 
- done:
+done:
 	SAFE_FREE(secret);
 
 	return ret;

Modified: branches/SAMBA_3_2_0/source/nsswitch/idmap_ldap.c
===================================================================
--- branches/SAMBA_3_2_0/source/nsswitch/idmap_ldap.c	2007-09-10 19:04:57 UTC (rev 25062)
+++ branches/SAMBA_3_2_0/source/nsswitch/idmap_ldap.c	2007-09-10 19:14:22 UTC (rev 25063)
@@ -78,6 +78,7 @@
 	char *secret = NULL;
 	const char *tmp = NULL;
 	char *user_dn = NULL;
+	bool anon = false;
 
 	/* assume anonymous if we don't have a specified user */
 
@@ -106,7 +107,7 @@
 		if (!fetch_ldap_pw(&user_dn, &secret)) {
 			DEBUG(2, ("get_credentials: Failed to lookup ldap "
 				  "bind creds. Using anonymous connection.\n"));
-			*dn = talloc_strdup(mem_ctx, "");
+			anon = true;
 		} else {
 			*dn = talloc_strdup(mem_ctx, user_dn);
 			SAFE_FREE( user_dn );
@@ -114,10 +115,10 @@
 		}
 	}
 
-	smbldap_set_creds(ldap_state, false, *dn, secret);
+	smbldap_set_creds(ldap_state, anon, *dn, secret);
 	ret = NT_STATUS_OK;
 
- done:
+done:
 	SAFE_FREE(secret);
 
 	return ret;



More information about the samba-cvs mailing list