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 595 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.

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

char* get_group_name rsbac_gid_t  group,
char *  name
 

Definition at line 305 of file helpers.c.

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

char* get_user_name rsbac_uid_t  user,
char *  name
 

Definition at line 290 of file helpers.c.

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

char* inttostr char  [],
int 
 

char* longtostr char  [],
long 
 

int rsbac_dev_compare const void *  desc1,
const void *  desc2
 

Definition at line 62 of file helpers.c.

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

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

int rsbac_get_fullname char *  fullname,
rsbac_uid_t  uid
 

Definition at line 272 of file helpers.c.

References RSBAC_EINVALIDPOINTER.

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

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 320 of file helpers.c.

References RSBAC_EINVALIDVALUE.

Referenced by rsbac_get_gid().

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

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 239 of file helpers.c.

References RSBAC_EINVALIDVALUE.

Referenced by rsbac_get_uid().

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

int rsbac_group_compare const void *  a,
const void *  b
 

Definition at line 52 of file helpers.c.

References rsbac_u32_compare().

00053   {
00054     return rsbac_u32_compare((__u32 *) a, (__u32 *) b);
00055   }

int rsbac_nettemp_id_compare const void *  a,
const void *  b
 

Definition at line 57 of file helpers.c.

References rsbac_u32_compare().

00058   {
00059     return rsbac_u32_compare((__u32 *) a, (__u32 *) b);
00060   }

int rsbac_u32_compare __u32 *  a,
__u32 *  b
 

Definition at line 38 of file helpers.c.

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

00039   {
00040     if(*a < *b)
00041      return -1;
00042     if(*a > *b)
00043       return 1;
00044     return 0;
00045   }

int rsbac_user_compare const void *  a,
const void *  b
 

Definition at line 47 of file helpers.c.

References rsbac_u32_compare().

00048   {
00049     return rsbac_u32_compare((__u32 *) a, (__u32 *) b);
00050   }

int strtodevdesc char *  str,
struct rsbac_dev_desc_t dev_p
 

Definition at line 550 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.

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

__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 Thu Sep 22 16:42:22 2005 for RSBAC by  doxygen 1.4.2