Re: [PATCH 3/3] libselinux: sefcontext_compile invert semantics of "-r" flag

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

 



On 09/26/2016 01:48 PM, William Roberts wrote:
> On Mon, Sep 26, 2016 at 10:43 AM, Stephen Smalley <sds@xxxxxxxxxxxxx> wrote:
>> On 09/26/2016 10:22 AM, Janis Danisevskis wrote:
>>> The "-r" flag of sefcontext_compile now causes it to omit the
>>> precompiled regular expressions from the output.
>>
>> The code itself looks ok, aside from William's suggestion. Experimenting
>> with this a bit, I noticed the following difference in sizes among the
>> various options:
>>
>> 383165  file_contexts (text)
>> 1507941 file_contexts.bin (binary with pcre1 regexes)
>> 8304105 file_contexts.bin (binary with pcre2 regexes)
>> 540540  file_contexts.bin (binary omitting pcre2 regexes, via -r)
> 
> What's the size of the textual intermediate file?

This was just taking the
/etc/selinux/targeted/contexts/files/file_contexts file on Fedora and
running it through sefcontext_compile built with and without USE_PCRE2=y
and in the PCRE2 case, running it with and without -r.  So the text size
above is exactly what was fed into sefcontext_compile, no intermediates.

> 
>>
>> The increase in file_contexts.bin size from pcre1 to pcre2 (unless using
>> -r) is quite substantial.  Wondering how that affects the cost/benefit
>> tradeoff...
>>
>>>
>>> Signed-off-by: Janis Danisevskis <jdanis@xxxxxxxxxxx>
>>> ---
>>>  libselinux/utils/sefcontext_compile.c | 12 +++++++-----
>>>  1 file changed, 7 insertions(+), 5 deletions(-)
>>>
>>> diff --git a/libselinux/utils/sefcontext_compile.c b/libselinux/utils/sefcontext_compile.c
>>> index 8c48d32..b2746c7 100644
>>> --- a/libselinux/utils/sefcontext_compile.c
>>> +++ b/libselinux/utils/sefcontext_compile.c
>>> @@ -276,10 +276,12 @@ static void usage(const char *progname)
>>>           "         will be fc_file with the .bin suffix appended.\n\t"
>>>           "-p       Optional binary policy file that will be used to\n\t"
>>>           "         validate contexts defined in the fc_file.\n\t"
>>> -         "-r       Include precompiled regular expressions in the output.\n\t"
>>> +         "-r       Omit precompiled regular expressions from the output.\n\t"
>>>           "         (PCRE2 only. Compiled PCRE2 regular expressions are\n\t"
>>> -         "         not portable across architectures. When linked against\n\t"
>>> -         "         PCRE this flag is ignored)\n\t"
>>> +         "         not portable across architectures. Use this flag\n\t"
>>> +         "         if you know that you build for an incompatible\n\t"
>>> +         "         architecture to save space. When linked against\n\t"
>>> +         "         PCRE1 this flag is ignored.)\n\t"
>>>           "-i       Print regular expression info end exit. That is, back\n\t"
>>>           "         end version and architecture identifier.\n\t"
>>>           "         Arch identifier format (PCRE2):\n\t"
>>> @@ -294,7 +296,7 @@ int main(int argc, char *argv[])
>>>  {
>>>       const char *path = NULL;
>>>       const char *out_file = NULL;
>>> -     int do_write_precompregex = 0;
>>> +     int do_write_precompregex = 1;
>>>       char stack_path[PATH_MAX + 1];
>>>       char *tmp = NULL;
>>>       int fd, rc, opt;
>>> @@ -315,7 +317,7 @@ int main(int argc, char *argv[])
>>>                       policy_file = optarg;
>>>                       break;
>>>               case 'r':
>>> -                     do_write_precompregex = 1;
>>> +                     do_write_precompregex = 0;
>>>                       break;
>>>               case 'i':
>>>                       printf("%s (%s)\n", regex_version(),
>>>
>>
> 
> 
> 

_______________________________________________
Selinux mailing list
Selinux@xxxxxxxxxxxxx
To unsubscribe, send email to Selinux-leave@xxxxxxxxxxxxx.
To get help, send an email containing "help" to Selinux-request@xxxxxxxxxxxxx.



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

  Powered by Linux