Re: [PATCH 2/4] libsemanage -- max-uid

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 27 Mar 2012, Laurent Bigonville <bigon@xxxxxxxxxx> wrote:
> Again no rational and not original author

Changing "u" to "the_user" makes the code easier to read and search.

I'm not sure why we are implementing a maxuid check, it seems that in recent 
times support for larger uids has become more common so it might be worth 
removing that.

> --- a/libsemanage/src/genhomedircon.c
> +++ b/libsemanage/src/genhomedircon.c
> @@ -283,8 +283,8 @@
>  	char *rbuf = NULL;
>  	char *path = NULL;
>  	long rbuflen;
> -	uid_t temp, minuid = 0;
> -	int minuid_set = 0;
> +	uid_t temp, minuid = 0, maxuid = 0;
> +	int minuid_set = 0, maxuid_set = 0;
>  	struct passwd pwstorage, *pwbuf;
>  	struct stat buf;
>  	int retval;
> @@ -334,6 +334,16 @@
>  	}
>  	free(path);
>  	path = NULL;
> +	path = semanage_findval(PATH_ETC_LOGIN_DEFS, "UID_MAX", NULL);
> +	if (path && *path) {
> +		temp = atoi(path);
> +		if (!maxuid_set || temp > maxuid) {
> +			maxuid = temp;
> +			maxuid_set = 1;
> +		}
> +	}
> +	free(path);
> +	path = NULL;
> 
>  	path = semanage_findval(PATH_ETC_LIBUSER, "LU_UIDNUMBER", "=");
>  	if (path && *path) {
> @@ -350,6 +360,10 @@
>  		minuid = 500;
>  		minuid_set = 1;
>  	}
> +	if (!maxuid_set) {
> +		maxuid = 60000;
> +		maxuid_set = 1;
> +	}
> 
>  	rbuflen = sysconf(_SC_GETPW_R_SIZE_MAX);
>  	if (rbuflen <= 0)
> @@ -359,7 +373,7 @@
>  		goto fail;
>  	setpwent();
>  	while ((retval = getpwent_r(&pwstorage, rbuf, rbuflen, &pwbuf)) == 0) 
{
> -		if (pwbuf->pw_uid < minuid)
> +		if (pwbuf->pw_uid < minuid || pwbuf->pw_uid > maxuid)
>  			continue;
>  		if (!semanage_list_find(shells, pwbuf->pw_shell))
>  			continue;
> @@ -392,7 +406,7 @@
> 
>  			/* NOTE: old genhomedircon printed a warning on match 
*/
>  			if (hand.matched) {
> -				WARN(s->h_semanage, "%s homedir %s or its 
parent directory conflicts
> with a file context already specified in the policy.  This usually
> indicates an incorrectly defined system account.  If it is a system
> account please make sure its uid is less than %u or its login shell is
> /sbin/nologin.", pwbuf->pw_name, pwbuf->pw_dir, minuid);
> +				WARN(s->h_semanage, "%s homedir %s or its 
parent directory conflicts
> with a file context already specified in the policy.  This usually
> indicates an incorrectly defined system account.  If it is a system
> account please make sure its uid is less than %u or greater than %u or its
> login shell is /sbin/nologin.", pwbuf->pw_name, pwbuf->pw_dir, minuid,
> maxuid); } else {
>  				if (semanage_list_push(&homedir_list, path))
>  					goto fail;
> @@ -743,7 +757,7 @@
>  	semanage_seuser_t **seuser_list = NULL;
>  	unsigned int nseusers = 0;
>  	semanage_user_key_t *key = NULL;
> -	semanage_user_t *u = NULL;
> +	semanage_user_t *the_user = NULL;
>  	const char *name = NULL;
>  	const char *seuname = NULL;
>  	const char *prefix = NULL;
> @@ -769,22 +783,22 @@
>  				errors = STATUS_ERR;
>  				break;
>  			}
> -			if (semanage_user_query(s->h_semanage, key, &u) < 0)
> +			if (semanage_user_query(s->h_semanage, key, &the_user) 
< 0)
>  			{
>  				prefix = name;
>  				level = "s0";
>  			}
>  			else
>  			{
> -				prefix = semanage_user_get_prefix(u);
> -				level = semanage_user_get_mlslevel(u);
> +				prefix = semanage_user_get_prefix(the_user);
> +				level = semanage_user_get_mlslevel(the_user);
>  			}
> 
>  			if (set_fallback_user(s, seuname, prefix, level) != 0)
>  				errors = STATUS_ERR;
>  			semanage_user_key_free(key);
> -			if (u)
> -				semanage_user_free(u);
> +			if (the_user)
> +				semanage_user_free(the_user);
>  			break;
>  		}
>  	}
> 
> --
> This message was distributed to subscribers of the selinux mailing list.
> If you no longer wish to subscribe, send mail to majordomo@xxxxxxxxxxxxx
> with the words "unsubscribe selinux" without quotes as the message.


-- 
My Main Blog         http://etbe.coker.com.au/
My Documents Blog    http://doc.coker.com.au/

--
This message was distributed to subscribers of the selinux mailing list.
If you no longer wish to subscribe, send mail to majordomo@xxxxxxxxxxxxx with
the words "unsubscribe selinux" without quotes as the message.


[Index of Archives]     [Selinux Refpolicy]     [Linux SGX]     [Fedora Users]     [Fedora Desktop]     [Yosemite Photos]     [Yosemite Camping]     [Yosemite Campsites]     [KDE Users]     [Gnome Users]

  Powered by Linux