rpm 5.2.1
Defines | Functions | Variables

lib/rpmsx.c File Reference

#include "system.h"
#include <rpmiotypes.h>
#include <rpmio.h>
#include <rpmmacro.h>
#include <yarn.h>
#include <rpmtypes.h>
#include "rpmsx.h"
#include "debug.h"
Include dependency graph for rpmsx.c:

Go to the source code of this file.

Defines

#define _RPMSX_INTERNAL
#define inc_err()   nerr++

Functions

static void rpmsxSort (rpmsx sx)
 Stable sort for policy specifications, patterns before paths.
static void rpmsxpHasMetaChars (rpmsxp sxp)
static size_t rpmsxsPStem (const char *const buf)
 Return the length of the text that can be considered the stem.
static size_t rpmsxsFStem (const char *const buf)
 Return the length of the text that is the stem of a file name.
static int rpmsxAdd (rpmsx sx, const char **bpp)
 Find (or create) the stem of a file spec.
static int rpmsxFind (const rpmsx sx, const char **bpp)
 Find the stem of a file name.
static void rpmsxFini (void *_sx)
static rpmsx rpmsxGetPool (rpmioPool pool)
static int rpmsxpCheckNoDupes (const rpmsx sx)
 Check for duplicate specifications.
int rpmsxParse (rpmsx sx, const char *fn)
 Parse selinux file security context patterns.
rpmsx rpmsxNew (const char *fn)
 Create and load security context patterns.
int rpmsxCount (const rpmsx sx)
 Return security context patterns count.
int rpmsxIx (const rpmsx sx)
 Return security context patterns index.
int rpmsxSetIx (rpmsx sx, int ix)
 Set security context patterns index.
const char * rpmsxPattern (const rpmsx sx)
 Return current pattern.
const char * rpmsxType (const rpmsx sx)
 Return current type.
const char * rpmsxContext (const rpmsx sx)
 Return current context.
regex_t * rpmsxRE (const rpmsx sx)
 Return current regex.
mode_t rpmsxFMode (const rpmsx sx)
 Return current file mode.
int rpmsxFStem (const rpmsx sx)
 Return current file stem.
int rpmsxNext (rpmsx sx)
 Return next security context patterns iterator index.
rpmsx rpmsxInit (rpmsx sx, int reverse)
 Initialize security context patterns iterator.
const char * rpmsxFContext (rpmsx sx, const char *fn, mode_t fmode)
 Find file security context from path and type.

Variables

int _rpmsx_debug = 0
rpmioPool _rpmsxPool

Detailed Description

Definition in file rpmsx.c.


Define Documentation

#define _RPMSX_INTERNAL

Definition at line 13 of file rpmsx.c.

#define inc_err ( )    nerr++

Referenced by rpmsxParse().


Function Documentation

static int rpmsxAdd ( rpmsx  sx,
const char **  bpp 
) [static]

Find (or create) the stem of a file spec.

Error iff a file in the root directory or a regex that is too complex.

Return values:
*bppptr to text after stem.
Returns:
stem index, -1 on error

Definition at line 142 of file rpmsx.c.

References rpmsxsPStem(), xmalloc(), and xrealloc().

Referenced by rpmsxParse().

const char* rpmsxContext ( const rpmsx  sx)

Return current context.

Parameters:
sxsecurity context patterns
Returns:
current context, NULL on invalid

Definition at line 559 of file rpmsx.c.

Referenced by rpmsxFContext().

int rpmsxCount ( const rpmsx  sx)

Return security context patterns count.

Parameters:
sxsecurity context patterns
Returns:
current count

Definition at line 520 of file rpmsx.c.

const char* rpmsxFContext ( rpmsx  sx,
const char *  fn,
mode_t  fmode 
)

Find file security context from path and type.

Parameters:
sxsecurity context patterns
fnfile path
fmodefile mode
Returns:
file security context

Definition at line 639 of file rpmsx.c.

References rpmsxContext(), rpmsxFind(), rpmsxFMode(), rpmsxFStem(), rpmsxInit(), rpmsxNext(), rpmsxPattern(), and rpmsxRE().

static int rpmsxFind ( const rpmsx  sx,
const char **  bpp 
) [static]

Find the stem of a file name.

Error iff a file in the root directory or a regex that is too complex.

Parameters:
sxsecurity context patterns
Return values:
*bppptr to text after stem.
Returns:
stem index, -1 on error

Definition at line 186 of file rpmsx.c.

References rpmsxsFStem().

Referenced by rpmsxFContext().

static void rpmsxFini ( void *  _sx) [static]

Definition at line 207 of file rpmsx.c.

References _free().

Referenced by rpmsxGetPool().

mode_t rpmsxFMode ( const rpmsx  sx)

Return current file mode.

Parameters:
sxsecurity context patterns
Returns:
current file mode, 0 on invalid

Definition at line 577 of file rpmsx.c.

Referenced by rpmsxFContext().

int rpmsxFStem ( const rpmsx  sx)

Return current file stem.

Parameters:
sxsecurity context patterns
Returns:
current file stem, -1 on invalid

Definition at line 586 of file rpmsx.c.

Referenced by rpmsxFContext().

static rpmsx rpmsxGetPool ( rpmioPool  pool) [static]

Definition at line 236 of file rpmsx.c.

References _rpmsx_debug, _rpmsxPool, rpmioGetPool(), rpmioNewPool(), and rpmsxFini().

Referenced by rpmsxNew().

rpmsx rpmsxInit ( rpmsx  sx,
int  reverse 
)

Initialize security context patterns iterator.

Parameters:
sxsecurity context patterns
reverseiterate in reverse order?
Returns:
security context patterns

Definition at line 627 of file rpmsx.c.

References reverse.

Referenced by rpmsxFContext().

int rpmsxIx ( const rpmsx  sx)

Return security context patterns index.

Parameters:
sxsecurity context patterns
Returns:
current index

Definition at line 525 of file rpmsx.c.

rpmsx rpmsxNew ( const char *  fn)

Create and load security context patterns.

Parameters:
fnsecurity context patterns file name
Returns:
new security context patterns

Definition at line 500 of file rpmsx.c.

References rpmsxFree(), rpmsxGetPool(), rpmsxLink(), and rpmsxParse().

int rpmsxNext ( rpmsx  sx)

Return next security context patterns iterator index.

Parameters:
sxsecurity context patterns
Returns:
security context patterns iterator index, -1 on termination

Definition at line 595 of file rpmsx.c.

References _rpmsx_debug.

Referenced by rpmsxFContext().

int rpmsxParse ( rpmsx  sx,
const char *  fn 
)

Parse selinux file security context patterns.

Parameters:
sxsecurity context patterns
fnfile name to parse
Returns:
0 on success

Definition at line 298 of file rpmsx.c.

References _, _free(), errno, inc_err, items, rpmGetPath(), rpmsxAdd(), rpmsxpCheckNoDupes(), rpmsxpHasMetaChars(), rpmsxSort(), S_IFSOCK, security_check_context, xcalloc(), and xmalloc().

Referenced by rpmsxNew().

const char* rpmsxPattern ( const rpmsx  sx)

Return current pattern.

Parameters:
sxsecurity context patterns
Returns:
current pattern, NULL on invalid

Definition at line 541 of file rpmsx.c.

Referenced by rpmsxFContext().

static int rpmsxpCheckNoDupes ( const rpmsx  sx) [static]

Check for duplicate specifications.

If a duplicate specification is found and the context is the same, give a warning to the user. If a duplicate specification is found and the context is different, give a warning to the user (This could be changed to error). Return of non-zero is an error.

Parameters:
sxsecurity context patterns
Returns:
0 on success

Definition at line 259 of file rpmsx.c.

Referenced by rpmsxParse().

static void rpmsxpHasMetaChars ( rpmsxp  sxp) [static]

Definition at line 61 of file rpmsx.c.

Referenced by rpmsxParse().

regex_t* rpmsxRE ( const rpmsx  sx)

Return current regex.

Parameters:
sxsecurity context patterns
Returns:
current context, NULL on invalid

Definition at line 568 of file rpmsx.c.

Referenced by rpmsxFContext().

int rpmsxSetIx ( rpmsx  sx,
int  ix 
)

Set security context patterns index.

Parameters:
sxsecurity context patterns
ixnew index
Returns:
current index

Definition at line 530 of file rpmsx.c.

static size_t rpmsxsFStem ( const char *const  buf) [static]

Return the length of the text that is the stem of a file name.

Returns:
stem length, 0 if no identifiable stem

Definition at line 125 of file rpmsx.c.

Referenced by rpmsxFind().

static void rpmsxSort ( rpmsx  sx) [static]

Stable sort for policy specifications, patterns before paths.

Parameters:
sxsecurity context patterns

Definition at line 27 of file rpmsx.c.

References _free(), and xmalloc().

Referenced by rpmsxParse().

static size_t rpmsxsPStem ( const char *const  buf) [static]

Return the length of the text that can be considered the stem.

Returns:
stem length, 0 if no identifiable stem

Definition at line 103 of file rpmsx.c.

Referenced by rpmsxAdd().

const char* rpmsxType ( const rpmsx  sx)

Return current type.

Parameters:
sxsecurity context patterns
Returns:
current type, NULL on invalid/missing

Definition at line 550 of file rpmsx.c.


Variable Documentation

int _rpmsx_debug = 0

Definition at line 21 of file rpmsx.c.

Referenced by rpmsxGetPool(), and rpmsxNext().

Definition at line 234 of file rpmsx.c.

Referenced by rpmsxGetPool().