789
790
printerr(1, "%s while getting local hostname\n", k5err);
794
/* Compute the active directory machine name HOST$ */
795
strcpy(myhostad, myhostname);
796
for (i = 0; myhostad[i] != 0; ++i)
797
myhostad[i] = toupper(myhostad[i]);
792
801
retval = get_full_hostname(myhostname, myhostname, sizeof(myhostname));
833
842
if (strcmp(realm, default_realm) == 0)
834
843
tried_default = 1;
835
844
for (j = 0; svcnames[j] != NULL; j++) {
836
code = krb5_build_principal_ext(context, &princ,
848
* The special svcname "$" means 'try the active
849
* directory machine account'
851
if (strcmp(svcnames[j],"$") == 0) {
852
snprintf(spn, sizeof(spn), "%s@%s", myhostad, realm);
853
code = krb5_build_principal_ext(context, &princ,
860
snprintf(spn, sizeof(spn), "%s/%s@%s",
861
svcnames[j], myhostname, realm);
862
code = krb5_build_principal_ext(context, &princ,
845
873
k5err = gssd_k5_err_msg(context, code);
846
printerr(1, "%s while building principal for "
847
"'%s/%s@%s'\n", k5err, svcnames[j],
874
printerr(1, "%s while building principal for '%s'\n",
851
878
code = krb5_kt_get_entry(context, kt, princ, 0, 0, kte);
852
879
krb5_free_principal(context, princ);
854
881
k5err = gssd_k5_err_msg(context, code);
855
printerr(3, "%s while getting keytab entry for "
856
"'%s/%s@%s'\n", k5err, svcnames[j],
882
printerr(3, "%s while getting keytab entry for '%s'\n",
859
printerr(3, "Success getting keytab entry for "
861
svcnames[j], myhostname, realm);
885
printerr(3, "Success getting keytab entry for '%s'\n",spn);
871
895
for (j = 0; svcnames[j] != NULL; j++) {
897
if (strcmp(svcnames[j],"$") == 0)
873
899
code = gssd_search_krb5_keytab(context, kt, realm,
874
900
svcnames[j], &found, kte);
875
901
if (!code && found) {
1160
1186
krb5_keytab kt = NULL;;
1161
1187
int retval = 0;
1162
1188
char *k5err = NULL;
1163
const char *svcnames[4] = { "root", "nfs", "host", NULL };
1189
const char *svcnames[5] = { "$", "root", "nfs", "host", NULL };
1166
1192
* If a specific service name was specified, use it.