Patch from Secure Endpoints/Asanka Herath for windows support
This commit is contained in:
		| @@ -65,6 +65,7 @@ check_one_file(krb5_context context, | ||||
| 	fclose (f); | ||||
| 	return EISDIR; | ||||
|     } | ||||
| #ifndef _WIN32 | ||||
|     if (st.st_uid != pwd->pw_uid && st.st_uid != 0) { | ||||
| 	fclose (f); | ||||
| 	return EACCES; | ||||
| @@ -73,6 +74,7 @@ check_one_file(krb5_context context, | ||||
| 	fclose (f); | ||||
| 	return EACCES; | ||||
|     } | ||||
| #endif | ||||
|  | ||||
|     while (fgets (buf, sizeof(buf), f) != NULL) { | ||||
| 	krb5_principal tmp; | ||||
| @@ -124,10 +126,12 @@ check_directory(krb5_context context, | ||||
|     if (!S_ISDIR(st.st_mode)) | ||||
| 	return ENOTDIR; | ||||
|  | ||||
| #ifndef _WIN32 | ||||
|     if (st.st_uid != pwd->pw_uid && st.st_uid != 0) | ||||
| 	return EACCES; | ||||
|     if ((st.st_mode & (S_IWGRP | S_IWOTH)) != 0) | ||||
| 	return EACCES; | ||||
| #endif | ||||
|  | ||||
|     if((d = opendir(dirname)) == NULL) | ||||
| 	return errno; | ||||
| @@ -217,6 +221,9 @@ match_local_principals(krb5_context context, | ||||
|  * ignored. Subdirectories are not traversed. Note that this directory | ||||
|  * may not be checked by other Kerberos implementations. | ||||
|  * | ||||
|  * If no configuration file exists, match user against local domains, | ||||
|  * ie luser@LOCAL-REALMS-IN-CONFIGURATION-FILES. | ||||
|  * | ||||
|  * @param context Kerberos 5 context. | ||||
|  * @param principal principal to check if allowed to login | ||||
|  * @param luser local user id | ||||
| @@ -226,14 +233,15 @@ match_local_principals(krb5_context context, | ||||
|  * @ingroup krb5_support | ||||
|  */ | ||||
|  | ||||
| krb5_boolean KRB5_LIB_FUNCTION | ||||
| KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL | ||||
| krb5_kuserok (krb5_context context, | ||||
| 	      krb5_principal principal, | ||||
| 	      const char *luser) | ||||
| { | ||||
| #ifndef _WIN32 | ||||
|     char *buf; | ||||
|     size_t buflen; | ||||
|     struct passwd *pwd; | ||||
|     struct passwd *pwd = NULL; | ||||
|     krb5_error_code ret; | ||||
|     krb5_boolean result = FALSE; | ||||
|  | ||||
| @@ -284,4 +292,10 @@ krb5_kuserok (krb5_context context, | ||||
| 	return match_local_principals(context, principal, luser); | ||||
|  | ||||
|     return FALSE; | ||||
| #else | ||||
|     /* The .k5login file may be on a remote profile and we don't have | ||||
|        access to the profile until we have a token handle for the | ||||
|        user's credentials. */ | ||||
|     return match_local_principals(context, principal, luser); | ||||
| #endif | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Love Hornquist Astrand
					Love Hornquist Astrand