helpers.h File Reference

#include <linux/types.h>
#include <rsbac/types.h>

Go to the source code of this file.

Functions

char * inttostr (char[], int)
char * ulongtostr (char[], u_long)
char * u64tostrmac (char[], __u64)
int rsbac_u32_compare (__u32 *a, __u32 *b)
int rsbac_user_compare (const void *a, const void *b)
int rsbac_group_compare (const void *a, const void *b)
int rsbac_nettemp_id_compare (const void *a, const void *b)
int rsbac_dev_compare (const void *desc1, const void *desc2)
char * get_user_name (rsbac_uid_t user, char *name)
char * get_group_name (rsbac_gid_t group, char *name)
int rsbac_get_uid_name (rsbac_uid_t *uid, char *name, char *sourcename)
int rsbac_get_fullname (char *fullname, rsbac_uid_t uid)
static int rsbac_get_uid (rsbac_uid_t *uid, char *sourcename)
int rsbac_get_gid_name (rsbac_gid_t *gid, char *name, char *sourcename)
static int rsbac_get_gid (rsbac_gid_t *gid, char *sourcename)
char * u64tostrlog (char[], __u64)
__u64 strtou64log (char[], __u64 *)
__u64 strtou64mac (char[], __u64 *)
char * u64tostrrc (char[], __u64)
__u64 strtou64rc (char[], __u64 *)
char * u64tostrrcr (char[], __u64)
__u64 strtou64rcr (char[], __u64 *)
__u64 strtou64acl (char[], __u64 *)
char * devdesctostr (char *str, struct rsbac_dev_desc_t dev)
int strtodevdesc (char *str, struct rsbac_dev_desc_t *dev_p)
char * u64tostracl (char[], __u64)
char * longtostr (char[], long)


Function Documentation

char* devdesctostr char *  str,
struct rsbac_dev_desc_t  dev
 

Definition at line 598 of file helpers.c.

References D_block, D_block_major, D_char, D_char_major, rsbac_dev_desc_t::major, rsbac_dev_desc_t::minor, RSBAC_IS_ZERO_DEV_DESC, and rsbac_dev_desc_t::type.

00599   {
00600     if(RSBAC_IS_ZERO_DEV_DESC(dev))
00601       {
00602         sprintf(str, ":DEFAULT:");
00603         return str;
00604       }
00605     switch(dev.type)
00606       {
00607         case D_block:
00608         case D_char:
00609           sprintf(str, "%c%u:%u", 'b' + dev.type, dev.major, dev.minor);
00610           break;
00611         case D_block_major:
00612         case D_char_major:
00613           sprintf(str, "%c%u",
00614                   'b' + dev.type - (D_block_major - D_block),
00615                   dev.major);
00616           break;
00617         default:
00618           sprintf(str, "invalid!");
00619       }
00620     return str;
00621   }

char* get_group_name rsbac_gid_t  group,
char *  name
 

Definition at line 308 of file helpers.c.

00309   {
00310     struct group * group_info_p;
00311 
00312     if((group_info_p = getgrgid(group)))
00313       {
00314         strcpy(name, group_info_p->gr_name);
00315       }
00316     else
00317       {
00318         sprintf(name, "%u", group);
00319       }
00320     return name;
00321   }

char* get_user_name rsbac_uid_t  user,
char *  name
 

Definition at line 293 of file helpers.c.

00294   {
00295     struct passwd * user_info_p;
00296 
00297     if((user_info_p = getpwuid(user)))
00298       {
00299         strcpy(name, user_info_p->pw_name);
00300       }
00301     else
00302       {
00303         sprintf(name, "%u", user);
00304       }
00305     return name;
00306   }

char* inttostr char  [],
int 
 

char* longtostr char  [],
long 
 

int rsbac_dev_compare const void *  desc1,
const void *  desc2
 

Definition at line 65 of file helpers.c.

References rsbac_dev_desc_t::major, rsbac_dev_desc_t::minor, and rsbac_dev_desc_t::type.

00067   {
00068     const struct rsbac_dev_desc_t * i_desc1 = desc1;
00069     const struct rsbac_dev_desc_t * i_desc2 = desc2;
00070     int result;
00071     
00072     result = memcmp(&i_desc1->type,
00073                     &i_desc2->type,
00074                     sizeof(i_desc1->type));
00075     if(result)
00076       return result;
00077     result = memcmp(&i_desc1->major,
00078                     &i_desc2->major,
00079                     sizeof(i_desc1->major));
00080     if(result)
00081       return result;
00082     return memcmp(&i_desc1->minor,
00083                   &i_desc2->minor,
00084                   sizeof(i_desc1->minor));
00085   }

int rsbac_get_fullname char *  fullname,
rsbac_uid_t  uid
 

Definition at line 275 of file helpers.c.

References RSBAC_EINVALIDPOINTER.

00276   {
00277     struct passwd * user_info_p;
00278     rsbac_uid_t uid_i;
00279 
00280     if(!fullname)
00281       return -RSBAC_EINVALIDPOINTER;
00282     if(!(user_info_p = getpwuid(uid)))
00283       {
00284         sprintf(fullname, "%u", uid);
00285       }
00286     else
00287       {
00288         strcpy(fullname, user_info_p->pw_gecos);
00289       }
00290     return 0;
00291   }

static int rsbac_get_gid rsbac_gid_t gid,
char *  sourcename
[inline, static]
 

Definition at line 46 of file helpers.h.

References NULL, and rsbac_get_gid_name().

00047   {
00048     return rsbac_get_gid_name(gid, NULL, sourcename);
00049   }

int rsbac_get_gid_name rsbac_gid_t gid,
char *  name,
char *  sourcename
 

Definition at line 323 of file helpers.c.

References RSBAC_EINVALIDVALUE.

Referenced by rsbac_get_gid().

00324   {
00325     struct group * group_info_p;
00326     rsbac_gid_t gid_i;
00327 
00328     if(!(group_info_p = getgrnam(sourcename)))
00329       {
00330         gid_i = strtoul(sourcename,0,10);
00331         if(   !gid_i
00332            && strcmp("0", sourcename)
00333           )
00334           {
00335             return -RSBAC_EINVALIDVALUE;
00336           }
00337         if(name)
00338           {
00339             if((group_info_p = getgrgid(gid_i)))
00340               strcpy(name, group_info_p->gr_name);
00341             else
00342               sprintf(name, "%u", gid_i);
00343           }
00344       }
00345     else
00346       {
00347         gid_i = group_info_p->gr_gid;
00348         if(name)
00349           strcpy(name, group_info_p->gr_name);
00350       }
00351     if(gid)
00352       *gid = gid_i;
00353     return 0;
00354   }

static int rsbac_get_uid rsbac_uid_t uid,
char *  sourcename
[inline, static]
 

Definition at line 39 of file helpers.h.

References NULL, and rsbac_get_uid_name().

00040   {
00041     return rsbac_get_uid_name(uid, NULL, sourcename);
00042   }

int rsbac_get_uid_name rsbac_uid_t uid,
char *  name,
char *  sourcename
 

Definition at line 242 of file helpers.c.

References RSBAC_EINVALIDVALUE.

Referenced by rsbac_get_uid().

00243   {
00244     struct passwd * user_info_p;
00245     rsbac_uid_t uid_i;
00246 
00247     if(!(user_info_p = getpwnam(sourcename)))
00248       {
00249         uid_i = strtoul(sourcename,0,10);
00250         if(   !uid_i
00251            && strcmp("0", sourcename)
00252           )
00253           {
00254             return -RSBAC_EINVALIDVALUE;
00255           }
00256         if(name)
00257           {
00258             if((user_info_p = getpwuid(uid_i)))
00259               strcpy(name, user_info_p->pw_name);
00260             else
00261               sprintf(name, "%u", uid_i);
00262           }
00263       }
00264     else
00265       {
00266         uid_i = user_info_p->pw_uid;
00267         if(name)
00268           strcpy(name, user_info_p->pw_name);
00269       }
00270     if(uid)
00271       *uid = uid_i;
00272     return 0;
00273   }

int rsbac_group_compare const void *  a,
const void *  b
 

Definition at line 55 of file helpers.c.

References rsbac_u32_compare().

00056   {
00057     return rsbac_u32_compare((__u32 *) a, (__u32 *) b);
00058   }

int rsbac_nettemp_id_compare const void *  a,
const void *  b
 

Definition at line 60 of file helpers.c.

References rsbac_u32_compare().

00061   {
00062     return rsbac_u32_compare((__u32 *) a, (__u32 *) b);
00063   }

int rsbac_u32_compare __u32 *  a,
__u32 *  b
 

Definition at line 41 of file helpers.c.

Referenced by rsbac_group_compare(), rsbac_nettemp_id_compare(), and rsbac_user_compare().

00042   {
00043     if(*a < *b)
00044      return -1;
00045     if(*a > *b)
00046       return 1;
00047     return 0;
00048   }

int rsbac_user_compare const void *  a,
const void *  b
 

Definition at line 50 of file helpers.c.

References rsbac_u32_compare().

00051   {
00052     return rsbac_u32_compare((__u32 *) a, (__u32 *) b);
00053   }

int strtodevdesc char *  str,
struct rsbac_dev_desc_t dev_p
 

Definition at line 553 of file helpers.c.

References D_block, D_block_major, D_char, D_char_major, rsbac_dev_desc_t::major, rsbac_dev_desc_t::minor, RSBAC_EINVALIDTARGET, RSBAC_EINVALIDVALUE, RSBAC_ZERO_DEV_DESC, and rsbac_dev_desc_t::type.

00554   {
00555     char * p;
00556     char * c;
00557 
00558     if(!str)
00559       return -RSBAC_EINVALIDVALUE;
00560     if(!strcmp(str, ":DEFAULT:"))
00561       {
00562         *dev_p = RSBAC_ZERO_DEV_DESC;
00563         return 0;
00564       }
00565     p = str;
00566     c = strchr(p,':');
00567     switch(*p)
00568       {
00569         case 'b':
00570         case 'B':
00571           if(c)
00572             dev_p->type = D_block;
00573           else
00574             dev_p->type = D_block_major;
00575           break;
00576         case 'c':
00577         case 'C':
00578           if(c)
00579             dev_p->type = D_char;
00580           else
00581             dev_p->type = D_char_major;
00582           break;
00583         default:
00584           return -RSBAC_EINVALIDTARGET;
00585       }
00586     p++;
00587     dev_p->major = strtoul(p,0,0);
00588     if(c)
00589       {
00590         c++;
00591         dev_p->minor = strtoul(c,0,0);
00592       }
00593     else
00594       dev_p->minor = 0;
00595     return 0;
00596   }

__u64 strtou64acl char  [],
__u64 * 
 

__u64 strtou64log char  [],
__u64 * 
 

__u64 strtou64mac char  [],
__u64 * 
 

__u64 strtou64rc char  [],
__u64 * 
 

__u64 strtou64rcr char  [],
__u64 * 
 

char* u64tostracl char  [],
__u64 
 

char* u64tostrlog char  [],
__u64 
 

char* u64tostrmac char  [],
__u64 
 

char* u64tostrrc char  [],
__u64 
 

char* u64tostrrcr char  [],
__u64 
 

char* ulongtostr char  [],
u_long 
 


Generated on Sun May 21 14:30:58 2006 for RSBAC by  doxygen 1.4.2