[SCM] Samba Shared Repository - branch v3-3-test updated - release-3-2-0pre2-2879-gcb7ace2

Günther Deschner gd at samba.org
Tue Jun 17 17:54:58 GMT 2008


The branch, v3-3-test has been updated
       via  cb7ace209c2051ae02647188715fa6ee324c2bf6 (commit)
      from  ec86852fc6ce2d88ad5835c8fcb337c68fd6f6bc (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-3-test


- Log -----------------------------------------------------------------
commit cb7ace209c2051ae02647188715fa6ee324c2bf6
Author: Günther Deschner <gd at samba.org>
Date:   Tue Jun 17 16:20:29 2008 +0200

    libads: add ads_get_machine_kvno() to make ads_get_kvno() a bit more generic.
    
    Guenther

-----------------------------------------------------------------------

Summary of changes:
 source/include/proto.h          |    3 ++-
 source/libads/kerberos_keytab.c |   10 +++++-----
 source/libads/ldap.c            |   36 +++++++++++++++++++++++++++++-------
 3 files changed, 36 insertions(+), 13 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/include/proto.h b/source/include/proto.h
index b8d48be..de40ff6 100644
--- a/source/include/proto.h
+++ b/source/include/proto.h
@@ -2081,7 +2081,8 @@ char *ads_ou_string(ADS_STRUCT *ads, const char *org_unit);
 char *ads_default_ou_string(ADS_STRUCT *ads, const char *wknguid);
 ADS_STATUS ads_add_strlist(TALLOC_CTX *ctx, ADS_MODLIST *mods,
 				const char *name, const char **vals);
-uint32 ads_get_kvno(ADS_STRUCT *ads, const char *machine_name);
+uint32 ads_get_kvno(ADS_STRUCT *ads, const char *account_name);
+uint32_t ads_get_machine_kvno(ADS_STRUCT *ads, const char *machine_name);
 ADS_STATUS ads_clear_service_principal_names(ADS_STRUCT *ads, const char *machine_name);
 ADS_STATUS ads_add_service_principal_name(ADS_STRUCT *ads, const char *machine_name, 
                                           const char *my_fqdn, const char *spn);
diff --git a/source/libads/kerberos_keytab.c b/source/libads/kerberos_keytab.c
index d0161ad..8e69838 100644
--- a/source/libads/kerberos_keytab.c
+++ b/source/libads/kerberos_keytab.c
@@ -312,9 +312,9 @@ int ads_keytab_add_entry(ADS_STRUCT *ads, const char *srvPrinc)
 		}
 	}
 
-	kvno = (krb5_kvno) ads_get_kvno(ads, global_myname());
+	kvno = (krb5_kvno) ads_get_machine_kvno(ads, global_myname());
 	if (kvno == -1) {       /* -1 indicates failure, everything else is OK */
-		DEBUG(1,("ads_keytab_add_entry: ads_get_kvno failed to determine the system's kvno.\n"));
+		DEBUG(1,("ads_keytab_add_entry: ads_get_machine_kvno failed to determine the system's kvno.\n"));
 		ret = -1;
 		goto out;
 	}
@@ -380,7 +380,7 @@ int ads_keytab_flush(ADS_STRUCT *ads)
 		goto out;
 	}
 
-	kvno = (krb5_kvno) ads_get_kvno(ads, global_myname());
+	kvno = (krb5_kvno) ads_get_machine_kvno(ads, global_myname());
 	if (kvno == -1) {       /* -1 indicates a failure */
 		DEBUG(1,("ads_keytab_flush: Error determining the system's kvno.\n"));
 		goto out;
@@ -527,9 +527,9 @@ int ads_keytab_create_default(ADS_STRUCT *ads)
 
 	/* Now loop through the keytab and update any other existing entries... */
 	
-	kvno = (krb5_kvno) ads_get_kvno(ads, machine_name);
+	kvno = (krb5_kvno) ads_get_machine_kvno(ads, machine_name);
 	if (kvno == -1) {
-		DEBUG(1,("ads_keytab_create_default: ads_get_kvno failed to determine the system's kvno.\n"));
+		DEBUG(1,("ads_keytab_create_default: ads_get_machine_kvno failed to determine the system's kvno.\n"));
 		return -1;
 	}
 	
diff --git a/source/libads/ldap.c b/source/libads/ldap.c
index 01c4b44..7b9e510 100644
--- a/source/libads/ldap.c
+++ b/source/libads/ldap.c
@@ -1516,13 +1516,13 @@ ADS_STATUS ads_add_strlist(TALLOC_CTX *ctx, ADS_MODLIST *mods,
 }
 
 /**
- * Determines the computer account's current KVNO via an LDAP lookup
+ * Determines the an account's current KVNO via an LDAP lookup
  * @param ads An initialized ADS_STRUCT
- * @param machine_name the NetBIOS name of the computer, which is used to identify the computer account.
- * @return the kvno for the computer account, or -1 in case of a failure.
+ * @param account_name the NT samaccountname.
+ * @return the kvno for the account, or -1 in case of a failure.
  **/
 
-uint32 ads_get_kvno(ADS_STRUCT *ads, const char *machine_name)
+uint32 ads_get_kvno(ADS_STRUCT *ads, const char *account_name)
 {
 	LDAPMessage *res = NULL;
 	uint32 kvno = (uint32)-1;      /* -1 indicates a failure */
@@ -1531,14 +1531,14 @@ uint32 ads_get_kvno(ADS_STRUCT *ads, const char *machine_name)
 	char *dn_string = NULL;
 	ADS_STATUS ret = ADS_ERROR(LDAP_SUCCESS);
 
-	DEBUG(5,("ads_get_kvno: Searching for host %s\n", machine_name));
-	if (asprintf(&filter, "(samAccountName=%s$)", machine_name) == -1) {
+	DEBUG(5,("ads_get_kvno: Searching for account %s\n", account_name));
+	if (asprintf(&filter, "(samAccountName=%s)", account_name) == -1) {
 		return kvno;
 	}
 	ret = ads_search(ads, &res, filter, attrs);
 	SAFE_FREE(filter);
 	if (!ADS_ERR_OK(ret) || (ads_count_replies(ads, res) != 1)) {
-		DEBUG(1,("ads_get_kvno: Computer Account For %s not found.\n", machine_name));
+		DEBUG(1,("ads_get_kvno: Account for %s not found.\n", account_name));
 		ads_msgfree(ads, res);
 		return kvno;
 	}
@@ -1574,6 +1574,28 @@ uint32 ads_get_kvno(ADS_STRUCT *ads, const char *machine_name)
 }
 
 /**
+ * Determines the computer account's current KVNO via an LDAP lookup
+ * @param ads An initialized ADS_STRUCT
+ * @param machine_name the NetBIOS name of the computer, which is used to identify the computer account.
+ * @return the kvno for the computer account, or -1 in case of a failure.
+ **/
+
+uint32_t ads_get_machine_kvno(ADS_STRUCT *ads, const char *machine_name)
+{
+	char *computer_account = NULL;
+	uint32_t kvno = -1;
+
+	if (asprintf(&computer_account, "%s$", machine_name) < 0) {
+		return kvno;
+	}
+
+	kvno = ads_get_kvno(ads, computer_account);
+	free(computer_account);
+
+	return kvno;
+}
+
+/**
  * This clears out all registered spn's for a given hostname
  * @param ads An initilaized ADS_STRUCT
  * @param machine_name the NetBIOS name of the computer.


-- 
Samba Shared Repository


More information about the samba-cvs mailing list