add default v4_name_convert entries
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@5926 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
		| @@ -1,5 +1,5 @@ | ||||
| /* | ||||
|  * Copyright (c) 1997, 1998 Kungliga Tekniska H<>gskolan | ||||
|  * Copyright (c) 1997-1999 Kungliga Tekniska H<>gskolan | ||||
|  * (Royal Institute of Technology, Stockholm, Sweden).  | ||||
|  * All rights reserved.  | ||||
|  * | ||||
| @@ -502,6 +502,54 @@ krb5_realm_compare(krb5_context context, | ||||
|     return strcmp(princ_realm(princ1), princ_realm(princ2)) == 0; | ||||
| } | ||||
|  | ||||
| struct v4_name_convert { | ||||
|     const char *from; | ||||
|     const char *to;  | ||||
| } default_v4_name_convert[] = { | ||||
|     { "ftp", "ftp" }, | ||||
|     { "hprop", "hprop" }, | ||||
|     { "pop", "pop" }, | ||||
|     { "rcmd", "host" }, | ||||
|     { NULL, NULL } | ||||
| }; | ||||
|  | ||||
| static const char* | ||||
| get_name_conversion(krb5_context context, const char *realm, const char *name) | ||||
| { | ||||
|     struct v4_name_convert *q; | ||||
|     const char *p; | ||||
|     p = krb5_config_get_string(context, NULL, "realms", realm, | ||||
| 			       "v4_name_convert", "host", name, NULL); | ||||
|     if(p == NULL) | ||||
| 	p = krb5_config_get_string(context, NULL, "libdefaults",  | ||||
| 				   "v4_name_convert", "host", name, NULL); | ||||
|     if(p) | ||||
| 	return p; | ||||
|  | ||||
|     /* XXX should be possible to override default list */ | ||||
|     p = krb5_config_get_string(context, NULL, | ||||
| 			       "realms", | ||||
| 			       realm, | ||||
| 			       "v4_name_convert", | ||||
| 			       "plain", | ||||
| 			       name, | ||||
| 			       NULL); | ||||
|     if(p) | ||||
| 	return NULL; | ||||
|     p = krb5_config_get_string(context, NULL, | ||||
| 			       "libdefaults", | ||||
| 			       "v4_name_convert", | ||||
| 			       "plain", | ||||
| 			       name, | ||||
| 			       NULL); | ||||
|     if(p) | ||||
| 	return NULL; | ||||
|     for(q = default_v4_name_convert; q->from; q++) | ||||
| 	if(strcmp(q->from, name) == 0) | ||||
| 	    return q->to; | ||||
|     return NULL; | ||||
| } | ||||
|  | ||||
| krb5_error_code | ||||
| krb5_425_conv_principal_ext(krb5_context context, | ||||
| 			    const char *name, | ||||
| @@ -530,11 +578,7 @@ krb5_425_conv_principal_ext(krb5_context context, | ||||
| 	instance = NULL; | ||||
| 	goto no_host; | ||||
|     } | ||||
|     p = krb5_config_get_string(context, NULL, "realms", realm, | ||||
| 			       "v4_name_convert", "host", name, NULL); | ||||
|     if(p == NULL) | ||||
| 	p = krb5_config_get_string(context, NULL, "libdefaults",  | ||||
| 				   "v4_name_convert", "host", name, NULL); | ||||
|     p = get_name_conversion(context, realm, name); | ||||
|     if(p == NULL) | ||||
| 	goto no_host; | ||||
|     name = p; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Johan Danielsson
					Johan Danielsson