All of lore.kernel.org
 help / color / mirror / Atom feed
From: Joshua Brindle <jbrindle@tresys.com>
To: Ivan Gyurdiev <ivg2@cornell.edu>
Cc: Stephen Smalley <sds@epoch.ncsc.mil>,
	selinux@tycho.nsa.gov, Karl MacMillan <kmacmillan@tresys.com>,
	Frank Mayer <mayerf@tresys.com>,
	chris pebenito <cpebenito@tresys.com>,
	Daniel J Walsh <dwalsh@redhat.com>,
	James Morris <jmorris@redhat.com>,
	Chad Sellers <csellers@tresys.com>
Subject: Re: [ LIBSEMANAGE ] Runtime control over preservebools argument
Date: Mon, 07 Nov 2005 09:38:01 -0500	[thread overview]
Message-ID: <436F66C9.9020201@tresys.com> (raw)
In-Reply-To: <436C59DE.6050408@cornell.edu>

Ivan Gyurdiev wrote:
> Stephen Smalley wrote:
> 
>> On Fri, 2005-11-04 at 09:22 -0500, Ivan Gyurdiev wrote:
>>  
>>
>>> So, how do I specify that this is not a transient change, and I want 
>>> my booleans loaded into policy immediately?
>>>     
>>
>>
>> Ah, I see - setsebool -P wants to both update the saved settings and
>> load the result rather than preserving current settings.  So it wants
>> libsemanage to call load_policy with -b, unlike semodule.  Options are:
>> - add a semanage interface to set a property on the handle to control
>> whether booleans are preserved or not (by altering the args to
>> load_policy for that handle), similar to the existing interface for
>> controlling whether reloads are performed, or
>>   
> 
> Editing an argument string for programs in C is... probably one of the 
> most uncool patches I've ever written.
> I guess the end justifies the means...
> 
> Should pass valgrind, and work when called repeatedly with values 0 or 
> 1. Maybe the reload=0 case is a bit wrong - argument string cannot 
> contain "-b" anywhere.
> 
> I also fixed the memory leak in setsebool - see other patch (which 
> should be applied first).
> 
> Now booleans update correctly (minus migration issues - see other mail).
> Next: make them update in less than 10 seconds :)
> 
> 
<snip>

> +	if (do_reload) {
> +		char* prev_args = conf->load_policy->args;
> +		int len = (prev_args == NULL)? 0: strlen(prev_args);
> +		char* ptr = (char*) realloc(prev_args, len + 4);
> +
> +		if (!ptr) {
> +			ERR(sh, "out of memory, could not configure "
> +				"boolean reload");
> +			return STATUS_ERR;
> +		}
> +		strcpy(ptr + len, " -b");
> +		conf->load_policy->args = ptr;
> +
> +	} else {
> +		char* ptr = conf->load_policy->args;
> +
> +		while(*ptr++) {
> +			if (!strcmp(ptr, "-b")) {
> +				*ptr++ = ' ';	
> +				*ptr++ = ' ';
> +			}
> +		}
> +	}
> +	return STATUS_SUCCESS;
> +}
> +
I think you are doing this in the wrong place. Rather than mangling the 
argument string every time this function is called you should just add 
something to the handle that indicates whether or not to preserve 
booleans, and do this at load time.

However, I don't know if this is the right approach anyway. If someone 
sets a boolean without -P , foo, and then sets another boolean with -P 
you will revert foo when loading the new policy.

IMHO while we will need to regenerate the policy we should not load it 
and instead just set the runtime state. This will work for the common 
case but there is something of a corner case where the above scenerio 
happens and a module is also inserted in the same transaction, not sure 
how to handle that one.

Joshua

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

  reply	other threads:[~2005-11-07 14:44 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <436915FB.3040500@tresys.com>
     [not found] ` <1131027033.23420.30.camel@moss-spartans.epoch.ncsc.mil>
     [not found]   ` <436A86E6.4040205@cornell.edu>
2005-11-04  5:55     ` [ SELINUX ] [ POLICYCOREUTILS ] Convert setsebool -P to use libsemanage Ivan Gyurdiev
2005-11-04 13:20       ` Stephen Smalley
2005-11-04 14:22         ` Ivan Gyurdiev
2005-11-04 14:16           ` Stephen Smalley
2005-11-05  7:06             ` [ LIBSEMANAGE ] Runtime control over preservebools argument Ivan Gyurdiev
2005-11-07 14:38               ` Joshua Brindle [this message]
2005-11-07 15:12                 ` Daniel J Walsh
2005-11-04 14:57       ` [ SELINUX ] [ POLICYCOREUTILS ] Convert setsebool -P to use libsemanage Stephen Smalley
2005-11-04 15:35         ` Ivan Gyurdiev
2005-11-04 14:59       ` Stephen Smalley
2005-11-04 15:43         ` Ivan Gyurdiev
2005-11-04 15:33           ` Stephen Smalley
2005-11-04 16:08             ` Daniel J Walsh
2005-11-04 16:12               ` Stephen Smalley
2005-11-04 16:31                 ` Stephen Smalley
2005-11-04 17:08                   ` Ivan Gyurdiev
2005-11-04 16:59                     ` Stephen Smalley
2005-11-04 17:04                       ` Stephen Smalley
2005-11-04 17:11                   ` Stephen Smalley
2005-11-04 21:54                   ` Ivan Gyurdiev
2005-11-04 21:59                     ` Ivan Gyurdiev
2005-11-07 13:48                       ` Stephen Smalley
2005-11-07 14:56                         ` Stephen Smalley
2005-11-07 15:09                           ` Stephen Smalley
2005-11-07 16:40                         ` Ivan Gyurdiev
2005-11-07 16:33                           ` Stephen Smalley
2005-11-04 15:39       ` Stephen Smalley
2005-11-04 16:05         ` Daniel J Walsh

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=436F66C9.9020201@tresys.com \
    --to=jbrindle@tresys.com \
    --cc=cpebenito@tresys.com \
    --cc=csellers@tresys.com \
    --cc=dwalsh@redhat.com \
    --cc=ivg2@cornell.edu \
    --cc=jmorris@redhat.com \
    --cc=kmacmillan@tresys.com \
    --cc=mayerf@tresys.com \
    --cc=sds@epoch.ncsc.mil \
    --cc=selinux@tycho.nsa.gov \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.