@@ -801,7 +801,8 @@
char *k5err = NULL;
int tried_all = 0, tried_default = 0;
krb5_principal princ;
-
+ const char *notsetstr = "not set";
+ char *adhostoverride;
/* Get full target hostname */
retval = get_full_hostname(tgtname, targethostname,
@@ -818,11 +819,18 @@
}
/* Compute the active directory machine name HOST$ */
- strcpy(myhostad, myhostname);
- for (i = 0; myhostad[i] != 0; ++i)
- myhostad[i] = toupper(myhostad[i]);
- myhostad[i] = '$';
- myhostad[i+1] = 0;
+ krb5_appdefault_string(context, "nfs", NULL, "ad_principal_name", notsetstr, &adhostoverride);
Secondly, where does them memory for adhostoverride get freed??
steved.
+ if (strcmp(adhostoverride, notsetstr) != 0) {
+ printerr (0, "AD host string overridden with \"%s\" from appdefaults\n", adhostoverride);
+ /* No overflow: Windows cannot handle strings longer than 19 chars */
+ strcpy(myhostad, adhostoverride);
+ } else {
+ strcpy(myhostad, myhostname);
+ for (i = 0; myhostad[i] != 0; ++i)
+ myhostad[i] = toupper(myhostad[i]);
+ myhostad[i] = '$';
+ myhostad[i+1] = 0;