Re: This patch adds a new subs_dist file.

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

 



-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 04/18/2011 06:41 AM, Richard Haines wrote:
> 
> Dan,
> This patch always processes the substitution files (if installed) from the active policy contexts/files/file_contexts.subs and subs_dist irrespective of the backend type or SELABEL_OPT_PATH setting. 
> 
> Is this what's required ???
> 
> If not this patch processes the correct subs files when selabel_open is called with SELABEL_CTX_FILE. The other backends could also process their own substitution files if needed in their own areas.
> I've tested with selabel* and matchpathcon functions.
> 
> If this patch is okay then I will submit it to the patch queue.
> 
Ok with me.
> ---
>  libselinux/src/label.c      |    4 +---
>  libselinux/src/label_file.c |   15 +++++++++++++++
>  2 files changed, 16 insertions(+), 3 deletions(-)
> 
> diff --git a/libselinux/src/label.c b/libselinux/src/label.c
> index ba316df..7d71e72 100644
> --- a/libselinux/src/label.c
> +++ b/libselinux/src/label.c
> @@ -56,7 +56,7 @@ static char *selabel_sub(struct selabel_sub *ptr, const char *src)
>  	return NULL;
>  }
>  
> -static struct selabel_sub *selabel_subs_init(const char *path,struct selabel_sub *list)
> +struct selabel_sub *selabel_subs_init(const char *path,struct selabel_sub *list)
>  {
>  	char buf[1024];
>  	FILE *cfg = fopen(path, "r");
> @@ -161,8 +161,6 @@ struct selabel_handle *selabel_open(unsigned int backend,
>  	rec->validating = selabel_is_validate_set(opts, nopts);
>  
>  	rec->subs = NULL;
> -	rec->subs = selabel_subs_init(selinux_file_context_subs_dist_path(), rec->subs);
> -	rec->subs = selabel_subs_init(selinux_file_context_subs_path(), rec->subs);
>  
>  	if ((*initfuncs[backend])(rec, opts, nopts)) {
>  		free(rec);
> diff --git a/libselinux/src/label_file.c b/libselinux/src/label_file.c
> index 937e509..619c435 100644
> --- a/libselinux/src/label_file.c
> +++ b/libselinux/src/label_file.c
> @@ -395,6 +395,9 @@ static int process_line(struct selabel_handle *rec,
>  	return 0;
>  }
>  
> +/* Used to initialise the substitution files in label.c */
> +extern struct selabel_sub *selabel_subs_init(const char *path, struct selabel_sub *list);
> +
>  static int init(struct selabel_handle *rec, struct selinux_opt *opts,
>  		unsigned n)
>  {
> @@ -406,6 +409,7 @@ static int init(struct selabel_handle *rec, struct selinux_opt *opts,
>  	FILE *homedirfp = NULL;
>  	char local_path[PATH_MAX + 1];
>  	char homedir_path[PATH_MAX + 1];
> +	char subs_file[PATH_MAX + 1];
>  	char *line_buf = NULL;
>  	size_t line_len = 0;
>  	unsigned int lineno, pass, i, j, maxnspec;
> @@ -427,6 +431,17 @@ static int init(struct selabel_handle *rec, struct selinux_opt *opts,
>  			break;
>  		}
>  
> +	/* Process local and distribution substitution files */
> +	if (!path) {
> +		rec->subs = selabel_subs_init(selinux_file_context_subs_dist_path(), rec->subs);
> +		rec->subs = selabel_subs_init(selinux_file_context_subs_path(), rec->subs);
> +	} else {
> +		snprintf(subs_file, sizeof(subs_file), "%s.subs_dist", path);
> +		rec->subs = selabel_subs_init(subs_file, rec->subs);
> +		snprintf(subs_file, sizeof(subs_file), "%s.subs", path);
> +		rec->subs = selabel_subs_init(subs_file, rec->subs);
> +	}
> +
>  	/* Open the specification file. */
>  	if (!path)
>  		path = selinux_file_context_path();

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org/

iEYEARECAAYFAk2sV1cACgkQrlYvE4MpobPhzQCgmVjrSAzoURt1vXGJ/b5EohMJ
OWEAoNVQjouqUPvn2acPNTAxxlKcvcOw
=k5qu
-----END PGP SIGNATURE-----

--
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