All of lore.kernel.org
 help / color / mirror / Atom feed
From: Daniel J Walsh <dwalsh@redhat.com>
To: Joshua Brindle <jbrindle@tresys.com>
Cc: Ivan Gyurdiev <ivg2@cornell.edu>,
	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>,
	James Morris <jmorris@redhat.com>,
	Chad Sellers <csellers@tresys.com>
Subject: Re: [ LIBSEMANAGE ] Runtime control over preservebools argument
Date: Mon, 07 Nov 2005 10:12:47 -0500	[thread overview]
Message-ID: <436F6EEF.50907@redhat.com> (raw)
In-Reply-To: <436F66C9.9020201@tresys.com>

Joshua Brindle wrote:
> 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

I agree setsebool should not be loading policy.

-- 



--
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 15:19 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
2005-11-07 15:12                 ` Daniel J Walsh [this message]
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=436F6EEF.50907@redhat.com \
    --to=dwalsh@redhat.com \
    --cc=cpebenito@tresys.com \
    --cc=csellers@tresys.com \
    --cc=ivg2@cornell.edu \
    --cc=jbrindle@tresys.com \
    --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.