#include <stdlib.h>
#include <rsbac/types.h>
#include <rsbac/getname.h>
#include <rsbac/helpers.h>
#include <rsbac/error.h>
#include <rsbac/pax_getname.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
Go to the source code of this file.
Functions | |
char * | get_request_name (char *request_name, enum rsbac_adf_request_t request) |
enum rsbac_adf_request_t | get_request_nr (const char *request_name) |
char * | get_result_name (char *res_name, enum rsbac_adf_req_ret_t res) |
enum rsbac_adf_req_ret_t | get_result_nr (const char *res_name) |
enum rsbac_switch_target_t | get_attr_module (enum rsbac_attribute_t attr) |
char * | get_attribute_name (char *attr_name, enum rsbac_attribute_t attr) |
enum rsbac_attribute_t | get_attribute_nr (const char *attr_name) |
char * | get_attribute_value_name (char *attr_val_name, enum rsbac_attribute_t attr, union rsbac_attribute_value_t *attr_val_p) |
char * | get_scd_type_name (char *res_name, enum rsbac_scd_type_t res) |
enum rsbac_scd_type_t | get_scd_type_nr (const char *res_name) |
char * | get_target_name (char *target_type_name, enum rsbac_target_t target, char *target_id_name, union rsbac_target_id_t tid) |
char * | get_target_name_only (char *target_type_name, enum rsbac_target_t target) |
enum rsbac_target_t | get_target_nr (const char *target_name) |
char * | get_ipc_target_name (char *ipc_name, enum rsbac_ipc_type_t target) |
enum rsbac_ipc_type_t | get_ipc_target_nr (const char *ipc_name) |
char * | get_switch_target_name (char *switch_name, enum rsbac_switch_target_t target) |
enum rsbac_switch_target_t | get_switch_target_nr (const char *switch_name) |
char * | get_error_name (char *error_name, int error) |
char * | get_attribute_param (char *attr_name, enum rsbac_attribute_t attr) |
char * | get_log_level_name (char *ll_name, enum rsbac_log_level_t target) |
enum rsbac_log_level_t | get_log_level_nr (const char *ll_name) |
char * | get_cap_name (char *name, u_int value) |
int | get_cap_nr (const char *name) |
Variables | |
static char | request_list [R_NONE+1][24] |
static char | result_list [UNDEFINED+1][12] |
static rsbac_switch_target_int_t | attr_mod_list [A_none+1] |
static char | attribute_list [A_none+1][23] |
static char | target_list [T_NONE+1][11] |
static char | ipc_target_list [I_none+1][9] |
static char | switch_target_list [SW_NONE+1][12] |
static char | error_list [RSBAC_EMAX][25] |
static char | scd_type_list [ST_none+1][17] |
static char | attribute_param_list [A_none+1][193] |
static char | log_level_list [LL_invalid+1][9] |
static char | cap_list [RSBAC_CAP_MAX+1][17] |
|
Definition at line 667 of file getname.c. References A_none, attr_mod_list, and SW_NONE. Referenced by sys_rsbac_get_attr(), sys_rsbac_get_attr_n(), sys_rsbac_set_attr(), and sys_rsbac_set_attr_n(). 00668 { 00669 if(attr > A_none) 00670 return SW_NONE; 00671 else 00672 return attr_mod_list[attr]; 00673 }
|
|
Definition at line 681 of file getname.c. References A_none, attribute_list, and NULL. Referenced by rsbac_adf_request_int(), and rsbac_adf_set_attr(). 00683 { 00684 if(!attr_name) 00685 return(NULL); 00686 if(attr > A_none) 00687 strcpy(attr_name, "ERROR!"); 00688 else 00689 strcpy(attr_name, attribute_list[attr]); 00690 return(attr_name); 00691 }
|
|
Definition at line 693 of file getname.c. References A_none, and attribute_list. 00694 { 00695 enum rsbac_attribute_t i; 00696 00697 if(!attr_name) 00698 return(A_none); 00699 for (i = 0; i < A_none; i++) 00700 { 00701 if (!strcmp(attr_name,attribute_list[i])) 00702 { 00703 return(i); 00704 } 00705 } 00706 return(A_none); 00707 }
|
|
Definition at line 1381 of file getname.c. References A_none, attribute_param_list, and NULL. 01383 { 01384 if(!attr_name) 01385 return(NULL); 01386 if(attr > A_none) 01387 strcpy(attr_name, "ERROR!"); 01388 else 01389 strcpy(attr_name, attribute_param_list[attr]); 01390 return(attr_name); 01391 }
|
|
Definition at line 715 of file getname.c. References A_none, A_pax_flags, get_request_name(), get_switch_target_name(), get_target_name_only(), NULL, rsbac_attribute_value_t::pax_flags, pax_print_flags(), rsbac_kfree(), rsbac_kmalloc(), RSBAC_MAXNAMELEN, and rsbac_attribute_value_t::u_dummy. Referenced by rsbac_adf_request_int(). 00718 { 00719 if(!attr_val_name) 00720 return(NULL); 00721 if(attr > A_none) 00722 strcpy(attr_val_name, "ERROR!"); 00723 else 00724 switch(attr) 00725 { 00726 case A_none: 00727 strcpy(attr_val_name, "none"); 00728 break; 00729 #ifdef __KERNEL__ 00730 case A_create_data: 00731 { 00732 char * tmp = rsbac_kmalloc(RSBAC_MAXNAMELEN); 00733 00734 if(tmp) 00735 { 00736 if(attr_val_p->create_data.dentry_p) 00737 snprintf(attr_val_name, RSBAC_MAXNAMELEN - 1, 00738 "%s %s, mode %o", 00739 get_target_name_only(tmp, attr_val_p->create_data.target), 00740 attr_val_p->create_data.dentry_p->d_name.name, 00741 attr_val_p->create_data.mode & S_IALLUGO); 00742 else 00743 snprintf(attr_val_name, RSBAC_MAXNAMELEN - 1, 00744 "%s, mode %o", 00745 get_target_name_only(tmp, attr_val_p->create_data.target), 00746 attr_val_p->create_data.mode & S_IALLUGO); 00747 rsbac_kfree(tmp); 00748 } 00749 } 00750 break; 00751 case A_mode: 00752 sprintf(attr_val_name, "%o", attr_val_p->mode); 00753 break; 00754 case A_priority: 00755 sprintf(attr_val_name, "%i", attr_val_p->priority); 00756 break; 00757 case A_mod_name: 00758 if(attr_val_p->mod_name) 00759 strncpy(attr_val_name, attr_val_p->mod_name, RSBAC_MAXNAMELEN - 1); 00760 else 00761 strcpy(attr_val_name, "unknown"); 00762 attr_val_name[RSBAC_MAXNAMELEN - 1] = 0; 00763 break; 00764 case A_auth_add_f_cap: 00765 case A_auth_remove_f_cap: 00766 sprintf(attr_val_name, "%u:%u", 00767 attr_val_p->auth_cap_range.first, 00768 attr_val_p->auth_cap_range.last); 00769 break; 00770 case A_switch_target: 00771 get_switch_target_name(attr_val_name, attr_val_p->switch_target); 00772 break; 00773 case A_request: 00774 get_request_name(attr_val_name, attr_val_p->request); 00775 break; 00776 #endif 00777 #if defined(CONFIG_RSBAC_PAX) || !defined(__KERNEL__) 00778 case A_pax_flags: 00779 pax_print_flags(attr_val_name, attr_val_p->pax_flags); 00780 break; 00781 #endif 00782 default: 00783 snprintf(attr_val_name, RSBAC_MAXNAMELEN - 1, "%u", attr_val_p->u_dummy); 00784 } 00785 return(attr_val_name); 00786 }
|
|
Definition at line 1422 of file getname.c. References cap_list, CAP_NONE, and NULL. 01424 { 01425 if(!name) 01426 return(NULL); 01427 if(value > CAP_NONE) 01428 strcpy(name, "ERROR!"); 01429 else 01430 strcpy(name, cap_list[value]); 01431 return(name); 01432 }
|
|
Definition at line 1434 of file getname.c. References cap_list, CAP_NONE, and RT_NONE. 01435 { 01436 int i; 01437 01438 if(!name) 01439 return(RT_NONE); 01440 for (i = 0; i < CAP_NONE; i++) 01441 { 01442 if (!strcmp(name, cap_list[i])) 01443 { 01444 return(i); 01445 } 01446 } 01447 return(CAP_NONE); 01448 }
|
|
|
Definition at line 1290 of file getname.c. References I_none, ipc_target_list, and NULL. 01292 { 01293 if(!ipc_name) 01294 return(NULL); 01295 if(target > I_none) 01296 strcpy(ipc_name, "ERROR!"); 01297 else 01298 strcpy(ipc_name, ipc_target_list[target]); 01299 return(ipc_name); 01300 }
|
|
Definition at line 1302 of file getname.c. References I_none, and ipc_target_list. 01303 { 01304 enum rsbac_ipc_type_t i; 01305 01306 if(!ipc_name) 01307 return(I_none); 01308 for (i = 0; i < I_none; i++) 01309 { 01310 if (!strcmp(ipc_name,ipc_target_list[i])) 01311 { 01312 return(i); 01313 } 01314 } 01315 return(I_none); 01316 }
|
|
Definition at line 1394 of file getname.c. References LL_invalid, log_level_list, and NULL. 01396 { 01397 if(!ll_name) 01398 return(NULL); 01399 if(target > LL_invalid) 01400 strcpy(ll_name, "ERROR!"); 01401 else 01402 strcpy(ll_name, log_level_list[target]); 01403 return(ll_name); 01404 }
|
|
Definition at line 1406 of file getname.c. References LL_invalid, and log_level_list. 01407 { 01408 enum rsbac_log_level_t i; 01409 01410 if(!ll_name) 01411 return(LL_invalid); 01412 for (i = 0; i < LL_invalid; i++) 01413 { 01414 if (!strcmp(ll_name,log_level_list[i])) 01415 { 01416 return(i); 01417 } 01418 } 01419 return(LL_invalid); 01420 }
|
|
Definition at line 609 of file getname.c. References NULL, R_NONE, and request_list. Referenced by check_comp_rc_scd(), get_acl_special_right_name(), get_attribute_value_name(), get_rc_special_right_name(), rsbac_acl_check_right(), rsbac_adf_request_int(), rsbac_adf_set_attr(), sys_rsbac_adf_log_switch(), and sys_rsbac_get_adf_log(). 00611 { 00612 if(!request_name) 00613 return(NULL); 00614 if(request >= R_NONE) 00615 strcpy(request_name, "ERROR!"); 00616 else 00617 strcpy(request_name, request_list[request]); 00618 return(request_name); 00619 }
|
|
Definition at line 621 of file getname.c. References R_NONE, and request_list. Referenced by get_acl_special_right_nr(), and get_rc_special_right_nr(). 00622 { 00623 enum rsbac_adf_request_t i; 00624 00625 if(!request_name) 00626 return(R_NONE); 00627 for (i = 0; i < R_NONE; i++) 00628 { 00629 if (!strcmp(request_name,request_list[i])) 00630 { 00631 return(i); 00632 } 00633 } 00634 return(R_NONE); 00635 }
|
|
Definition at line 638 of file getname.c. References NULL, result_list, and UNDEFINED. Referenced by rsbac_adf_request_int(). 00640 { 00641 if(!res_name) 00642 return(NULL); 00643 if(res > UNDEFINED) 00644 strcpy(res_name, "ERROR!"); 00645 else 00646 strcpy(res_name, result_list[res]); 00647 return(res_name); 00648 }
|
|
Definition at line 650 of file getname.c. References result_list, and UNDEFINED. 00651 { 00652 enum rsbac_adf_req_ret_t i; 00653 00654 if(!res_name) 00655 return(UNDEFINED); 00656 for (i = 0; i < UNDEFINED; i++) 00657 { 00658 if (!strcmp(res_name,result_list[i])) 00659 { 00660 return(i); 00661 } 00662 } 00663 return(UNDEFINED); 00664 }
|
|
Definition at line 795 of file getname.c. References NULL, scd_type_list, and ST_none. Referenced by get_acl_scd_type_name(), get_rc_scd_type_name(), and get_target_name(). 00797 { 00798 if(!res_name) 00799 return(NULL); 00800 if(res > ST_none) 00801 strcpy(res_name, "ERROR!"); 00802 else 00803 strcpy(res_name, scd_type_list[res]); 00804 return(res_name); 00805 }
|
|
Definition at line 807 of file getname.c. References scd_type_list, and ST_none. Referenced by get_acl_scd_type_nr(), and get_rc_scd_type_nr(). 00808 { 00809 enum rsbac_scd_type_t i; 00810 00811 if(!res_name) 00812 return(ST_none); 00813 for (i = 0; i < ST_none; i++) 00814 { 00815 if (!strcmp(res_name, scd_type_list[i])) 00816 { 00817 return(i); 00818 } 00819 } 00820 return(ST_none); 00821 }
|
|
Definition at line 1325 of file getname.c. References NULL, SW_NONE, and switch_target_list. Referenced by get_attribute_value_name(), and sys_rsbac_switch(). 01327 { 01328 if(!switch_name) 01329 return(NULL); 01330 if(target > SW_NONE) 01331 strcpy(switch_name, "ERROR!"); 01332 else 01333 strcpy(switch_name, switch_target_list[target]); 01334 return(switch_name); 01335 }
|
|
Definition at line 1337 of file getname.c. References SW_NONE, and switch_target_list. 01338 { 01339 enum rsbac_switch_target_t i; 01340 01341 if(!switch_name) 01342 return(SW_NONE); 01343 for (i = 0; i < SW_NONE; i++) 01344 { 01345 #ifdef __KERNEL__ 01346 if (!strncmp(switch_name,switch_target_list[i],strlen(switch_target_list[i]))) 01347 #else 01348 if (!strcmp(switch_name,switch_target_list[i])) 01349 #endif 01350 { 01351 return(i); 01352 } 01353 } 01354 return(SW_NONE); 01355 }
|
|
Definition at line 830 of file getname.c. References D_block, D_block_major, D_char, D_char_major, rsbac_target_id_t::dev, get_scd_type_name(), rsbac_target_id_t::group, I_anonpipe, I_mqueue, I_msg, I_sem, I_shm, rsbac_ipc_t::id, rsbac_ipc_id_t::id_nr, rsbac_target_id_t::ipc, KERNEL_VERSION, rsbac_net_obj_desc_t::local_addr, rsbac_dev_desc_t::major, rsbac_dev_desc_t::minor, rsbac_target_id_t::netdev, rsbac_target_id_t::netobj, rsbac_target_id_t::nettemp, NIPQUAD, NULL, rsbac_target_id_t::process, rsbac_net_obj_desc_t::remote_addr, rsbac_get_full_path(), rsbac_get_net_family_name(), rsbac_get_net_protocol_name(), rsbac_get_net_type_name(), RSBAC_IFNAMSIZ, rsbac_kfree(), rsbac_kmalloc(), RSBAC_MAXNAMELEN, rsbac_min, rsbac_target_id_t::scd, rsbac_net_obj_desc_t::sock_p, T_DEV, T_DIR, T_FD, T_FIFO, T_FILE, T_GROUP, T_IPC, T_NETDEV, T_NETOBJ, T_NETTEMP, T_NETTEMP_NT, T_NONE, T_PROCESS, T_SCD, T_SYMLINK, T_USER, rsbac_dev_desc_t::type, rsbac_ipc_t::type, and rsbac_target_id_t::user. Referenced by auto_read_attr(), auto_read_write_attr(), auto_write_attr(), rsbac_acl_check_right(), rsbac_acl_sys_add_to_acl_entry(), rsbac_acl_sys_remove_acl(), rsbac_acl_sys_remove_acl_entry(), rsbac_acl_sys_remove_from_acl_entry(), rsbac_acl_sys_set_acl_entry(), rsbac_acl_sys_set_mask(), rsbac_adf_request_int(), and rsbac_adf_set_attr(). 00834 { 00835 #ifdef __KERNEL__ 00836 char * help_name; 00837 #else 00838 char help_name[RSBAC_MAXNAMELEN+4]; 00839 #endif 00840 00841 if(!target_type_name) 00842 return(NULL); 00843 00844 #ifdef __KERNEL__ 00845 #ifdef CONFIG_RSBAC_LOG_FULL_PATH 00846 help_name = rsbac_kmalloc(CONFIG_RSBAC_MAX_PATH_LEN + 4); 00847 #else 00848 help_name = rsbac_kmalloc(RSBAC_MAXNAMELEN + 4); 00849 #endif 00850 if(!help_name) 00851 return NULL; 00852 #endif 00853 00854 switch(target) 00855 { 00856 #ifdef __KERNEL__ 00857 case T_FD: strcpy (target_type_name, "FD"); 00858 if(!target_id_name) 00859 break; 00860 sprintf(target_id_name, "Device %02u:%02u Inode %u", 00861 RSBAC_MAJOR(tid.file.device), RSBAC_MINOR(tid.file.device), 00862 tid.file.inode); 00863 if( tid.file.dentry_p 00864 && tid.file.dentry_p->d_name.name 00865 && tid.file.dentry_p->d_name.len 00866 ) 00867 { 00868 #ifdef CONFIG_RSBAC_LOG_FULL_PATH 00869 if(rsbac_get_full_path(tid.file.dentry_p, help_name, 00870 CONFIG_RSBAC_MAX_PATH_LEN) > 0) 00871 { 00872 strcat(target_id_name, " Path "); 00873 strcat(target_id_name, help_name); 00874 } 00875 #else 00876 int namelen = rsbac_min(tid.file.dentry_p->d_name.len, RSBAC_MAXNAMELEN); 00877 00878 strcat(target_id_name, " Name "); 00879 strncpy(help_name, tid.file.dentry_p->d_name.name, namelen); 00880 help_name[namelen]=0; 00881 strcat(target_id_name, help_name); 00882 #endif 00883 } 00884 break; 00885 case T_FILE: strcpy (target_type_name, "FILE"); 00886 if(!target_id_name) 00887 break; 00888 sprintf(target_id_name, "Device %02u:%02u Inode %u", 00889 RSBAC_MAJOR(tid.file.device), RSBAC_MINOR(tid.file.device), 00890 tid.file.inode); 00891 if( tid.file.dentry_p 00892 && tid.file.dentry_p->d_name.name 00893 && tid.file.dentry_p->d_name.len 00894 ) 00895 { 00896 #ifdef CONFIG_RSBAC_LOG_FULL_PATH 00897 if(rsbac_get_full_path(tid.file.dentry_p, help_name, 00898 CONFIG_RSBAC_MAX_PATH_LEN) > 0) 00899 { 00900 strcat(target_id_name, " Path "); 00901 strcat(target_id_name, help_name); 00902 } 00903 #else 00904 int namelen = rsbac_min(tid.file.dentry_p->d_name.len, RSBAC_MAXNAMELEN); 00905 00906 strcat(target_id_name, " Name "); 00907 strncpy(help_name, tid.file.dentry_p->d_name.name, namelen); 00908 help_name[namelen]=0; 00909 strcat(target_id_name, help_name); 00910 #endif 00911 } 00912 break; 00913 case T_DIR: strcpy (target_type_name, "DIR"); 00914 if(!target_id_name) 00915 break; 00916 sprintf(target_id_name, "Device %02u:%02u Inode %u", 00917 RSBAC_MAJOR(tid.file.device), RSBAC_MINOR(tid.file.device), 00918 tid.dir.inode); 00919 if( tid.dir.dentry_p 00920 && tid.dir.dentry_p->d_name.name 00921 && tid.dir.dentry_p->d_name.len 00922 ) 00923 { 00924 #ifdef CONFIG_RSBAC_LOG_FULL_PATH 00925 if(rsbac_get_full_path(tid.dir.dentry_p, help_name, 00926 CONFIG_RSBAC_MAX_PATH_LEN) > 0) 00927 { 00928 strcat(target_id_name, " Path "); 00929 strcat(target_id_name, help_name); 00930 } 00931 #else 00932 int namelen = rsbac_min(tid.dir.dentry_p->d_name.len, RSBAC_MAXNAMELEN); 00933 00934 strcat(target_id_name, " Name "); 00935 strncpy(help_name, tid.dir.dentry_p->d_name.name, namelen); 00936 help_name[namelen]=0; 00937 strcat(target_id_name, help_name); 00938 #endif 00939 } 00940 break; 00941 case T_FIFO: strcpy (target_type_name, "FIFO"); 00942 if(!target_id_name) 00943 break; 00944 sprintf(target_id_name, "Device %02u:%02u Inode %u", 00945 RSBAC_MAJOR(tid.file.device), RSBAC_MINOR(tid.file.device), 00946 tid.fifo.inode); 00947 if( tid.fifo.dentry_p 00948 && tid.fifo.dentry_p->d_name.name 00949 && tid.fifo.dentry_p->d_name.len 00950 ) 00951 { 00952 #ifdef CONFIG_RSBAC_LOG_FULL_PATH 00953 if(rsbac_get_full_path(tid.fifo.dentry_p, help_name, 00954 CONFIG_RSBAC_MAX_PATH_LEN) > 0) 00955 { 00956 strcat(target_id_name, " Path "); 00957 strcat(target_id_name, help_name); 00958 } 00959 #else 00960 int namelen = rsbac_min(tid.fifo.dentry_p->d_name.len, RSBAC_MAXNAMELEN); 00961 00962 strcat(target_id_name, " Name "); 00963 strncpy(help_name, tid.fifo.dentry_p->d_name.name, namelen); 00964 help_name[namelen]=0; 00965 strcat(target_id_name, help_name); 00966 #endif 00967 } 00968 break; 00969 case T_SYMLINK: strcpy (target_type_name, "SYMLINK"); 00970 if(!target_id_name) 00971 break; 00972 sprintf(target_id_name, "Device %02u:%02u Inode %u", 00973 RSBAC_MAJOR(tid.file.device), RSBAC_MINOR(tid.file.device), 00974 tid.symlink.inode); 00975 if( tid.symlink.dentry_p 00976 && tid.symlink.dentry_p->d_name.name 00977 && tid.symlink.dentry_p->d_name.len 00978 ) 00979 { 00980 #ifdef CONFIG_RSBAC_LOG_FULL_PATH 00981 if(rsbac_get_full_path(tid.symlink.dentry_p, help_name, 00982 CONFIG_RSBAC_MAX_PATH_LEN) > 0) 00983 { 00984 strcat(target_id_name, " Path "); 00985 strcat(target_id_name, help_name); 00986 } 00987 #else 00988 int namelen = rsbac_min(tid.symlink.dentry_p->d_name.len, RSBAC_MAXNAMELEN); 00989 00990 strcat(target_id_name, " Name "); 00991 strncpy(help_name, tid.symlink.dentry_p->d_name.name, namelen); 00992 help_name[namelen]=0; 00993 strcat(target_id_name, help_name); 00994 #endif 00995 } 00996 break; 00997 case T_DEV: strcpy (target_type_name, "DEV"); 00998 if(!target_id_name) 00999 break; 01000 switch(tid.dev.type) 01001 { 01002 case D_block: 01003 sprintf(target_id_name, "block %02u:%02u", 01004 tid.dev.major, tid.dev.minor); 01005 break; 01006 case D_char: 01007 sprintf(target_id_name, "char %02u:%02u", 01008 tid.dev.major, tid.dev.minor); 01009 break; 01010 case D_block_major: 01011 sprintf(target_id_name, "block major %02u", 01012 tid.dev.major); 01013 break; 01014 case D_char_major: 01015 sprintf(target_id_name, "char major %02u", 01016 tid.dev.major); 01017 break; 01018 default: 01019 sprintf(target_id_name, "*unknown* %02u:%02u", 01020 tid.dev.major, tid.dev.minor); 01021 } 01022 break; 01023 case T_NETOBJ: strcpy (target_type_name, "NETOBJ"); 01024 if(!target_id_name) 01025 break; 01026 #ifdef CONFIG_NET 01027 if( tid.netobj.sock_p 01028 && tid.netobj.sock_p->ops 01029 && tid.netobj.sock_p->sk 01030 ) 01031 { 01032 char type_name[RSBAC_MAXNAMELEN]; 01033 01034 switch(tid.netobj.sock_p->ops->family) 01035 { 01036 case AF_INET: 01037 { 01038 __u32 saddr; 01039 __u16 sport; 01040 __u32 daddr; 01041 __u16 dport; 01042 struct net_device *dev; 01043 char ldevname[RSBAC_IFNAMSIZ+10]; 01044 char rdevname[RSBAC_IFNAMSIZ+10]; 01045 01046 if(tid.netobj.local_addr) 01047 { 01048 struct sockaddr_in * addr = tid.netobj.local_addr; 01049 01050 saddr = addr->sin_addr.s_addr; 01051 sport = ntohs(addr->sin_port); 01052 } 01053 else 01054 { 01055 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) 01056 saddr = inet_sk(tid.netobj.sock_p->sk)->saddr; 01057 sport = inet_sk(tid.netobj.sock_p->sk)->num; 01058 #else 01059 saddr = tid.netobj.sock_p->sk->saddr; 01060 sport = tid.netobj.sock_p->sk->num; 01061 #endif 01062 } 01063 if(tid.netobj.remote_addr) 01064 { 01065 struct sockaddr_in * addr = tid.netobj.remote_addr; 01066 01067 daddr = addr->sin_addr.s_addr; 01068 dport = ntohs(addr->sin_port); 01069 } 01070 else 01071 { 01072 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) 01073 daddr = inet_sk(tid.netobj.sock_p->sk)->daddr; 01074 dport = ntohs(inet_sk(tid.netobj.sock_p->sk)->dport); 01075 #else 01076 daddr = tid.netobj.sock_p->sk->daddr; 01077 dport = ntohs(tid.netobj.sock_p->sk->dport); 01078 #endif 01079 } 01080 dev = ip_dev_find(saddr); 01081 if(dev) 01082 { 01083 sprintf(ldevname, "%s:", dev->name); 01084 dev_put(dev); 01085 } 01086 else 01087 ldevname[0] = 0; 01088 dev = ip_dev_find(daddr); 01089 if(dev) 01090 { 01091 sprintf(rdevname, "%s:", dev->name); 01092 dev_put(dev); 01093 } 01094 else 01095 rdevname[0] = 0; 01096 sprintf(target_id_name, "%p INET %s proto %s local %s%u.%u.%u.%u:%u remote %s%u.%u.%u.%u:%u", 01097 tid.netobj.sock_p, 01098 rsbac_get_net_type_name(type_name, 01099 tid.netobj.sock_p->type), 01100 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) 01101 rsbac_get_net_protocol_name(help_name, 01102 tid.netobj.sock_p->sk->sk_protocol), 01103 #else 01104 rsbac_get_net_protocol_name(help_name, 01105 tid.netobj.sock_p->sk->protocol), 01106 #endif 01107 ldevname, 01108 NIPQUAD(saddr), 01109 sport, 01110 rdevname, 01111 NIPQUAD(daddr), 01112 dport); 01113 } 01114 break; 01115 case AF_UNIX: 01116 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) 01117 if(unix_sk(tid.netobj.sock_p->sk)->addr) 01118 sprintf(target_id_name, "%p UNIX %s %s", 01119 tid.netobj.sock_p, 01120 rsbac_get_net_type_name(type_name, 01121 tid.netobj.sock_p->type), 01122 unix_sk(tid.netobj.sock_p->sk)->addr->name[0].sun_path); 01123 #else 01124 if(tid.netobj.sock_p->sk->protinfo.af_unix.addr) 01125 sprintf(target_id_name, "%p UNIX %s %s", 01126 tid.netobj.sock_p, 01127 rsbac_get_net_type_name(type_name, 01128 tid.netobj.sock_p->type), 01129 tid.netobj.sock_p->sk->protinfo.af_unix.addr->name[0].sun_path); 01130 #endif 01131 else 01132 if(tid.netobj.local_addr) 01133 { 01134 struct sockaddr_un * addr = tid.netobj.local_addr; 01135 01136 sprintf(target_id_name, "%p UNIX %s %s", 01137 tid.netobj.sock_p, 01138 rsbac_get_net_type_name(type_name, 01139 tid.netobj.sock_p->type), 01140 addr->sun_path); 01141 } 01142 else 01143 sprintf(target_id_name, "%p UNIX %s", 01144 tid.netobj.sock_p, 01145 rsbac_get_net_type_name(type_name, 01146 tid.netobj.sock_p->type)); 01147 break; 01148 default: 01149 sprintf(target_id_name, "%p %s %s", 01150 tid.netobj.sock_p, 01151 rsbac_get_net_family_name(help_name, 01152 tid.netobj.sock_p->ops->family), 01153 rsbac_get_net_type_name(type_name, 01154 tid.netobj.sock_p->type)); 01155 } 01156 } 01157 else 01158 #endif /* CONFIG_NET */ 01159 { 01160 sprintf(target_id_name, "%p", tid.netobj.sock_p); 01161 } 01162 break; 01163 #endif /* __KERNEL__ */ 01164 case T_IPC: strcpy (target_type_name, "IPC"); 01165 if(!target_id_name) 01166 break; 01167 switch (tid.ipc.type) 01168 { 01169 case I_sem: strcpy(target_id_name, "Sem-ID "); 01170 break; 01171 case I_msg: strcpy(target_id_name, "Msg-ID "); 01172 break; 01173 case I_shm: strcpy(target_id_name, "Shm-ID "); 01174 break; 01175 case I_anonpipe: strcpy(target_id_name, "AnonPipe-ID "); 01176 break; 01177 case I_mqueue: strcpy(target_id_name, "Mqueue-ID "); 01178 break; 01179 default: strcpy(target_id_name, "??\?-ID "); 01180 break; 01181 }; 01182 sprintf(help_name, "%lu", tid.ipc.id.id_nr); 01183 strcat(target_id_name, help_name); 01184 break; 01185 case T_SCD: strcpy (target_type_name, "SCD"); 01186 if(target_id_name) 01187 get_scd_type_name(target_id_name, tid.scd); 01188 break; 01189 case T_USER: strcpy (target_type_name, "USER"); 01190 if(target_id_name) 01191 sprintf(target_id_name, "%u", tid.user); 01192 break; 01193 case T_PROCESS: strcpy (target_type_name, "PROCESS"); 01194 if(target_id_name) 01195 sprintf(target_id_name, "%u", tid.process); 01196 break; 01197 case T_GROUP: strcpy (target_type_name, "GROUP"); 01198 if(target_id_name) 01199 sprintf(target_id_name, "%u", tid.group); 01200 break; 01201 case T_NETDEV: strcpy (target_type_name, "NETDEV"); 01202 if(!target_id_name) 01203 break; 01204 strncpy(target_id_name, tid.netdev, RSBAC_IFNAMSIZ); 01205 target_id_name[RSBAC_IFNAMSIZ] = 0; 01206 break; 01207 case T_NETTEMP: strcpy (target_type_name, "NETTEMP"); 01208 if(target_id_name) 01209 sprintf(target_id_name, "%u", tid.nettemp); 01210 break; 01211 case T_NETTEMP_NT: strcpy (target_type_name, "NETTEMP_NT"); 01212 if(target_id_name) 01213 sprintf(target_id_name, "%u", tid.nettemp); 01214 break; 01215 case T_NONE: strcpy (target_type_name, "NONE"); 01216 if(target_id_name) 01217 strcpy (target_id_name, "NONE"); 01218 break; 01219 default: strcpy (target_type_name, "ERROR!!!"); 01220 if(target_id_name) 01221 sprintf(target_id_name, "%u", target); 01222 } 01223 #ifdef __KERNEL__ 01224 rsbac_kfree(help_name); 01225 #endif 01226 return(target_type_name); 01227 }
|
|
Definition at line 1229 of file getname.c. References NULL, T_DEV, T_DIR, T_FD, T_FIFO, T_FILE, T_GROUP, T_IPC, T_NETDEV, T_NETOBJ, T_NETTEMP, T_NETTEMP_NT, T_NONE, T_PROCESS, T_SCD, T_SYMLINK, and T_USER. Referenced by check_comp_rc(), get_attribute_value_name(), and rsbac_rc_sys_copy_type(). 01231 { 01232 if(!target_type_name) 01233 return(NULL); 01234 01235 switch(target) 01236 { 01237 case T_FILE: strcpy (target_type_name, "FILE"); 01238 break; 01239 case T_DIR: strcpy (target_type_name, "DIR"); 01240 break; 01241 case T_FIFO: strcpy (target_type_name, "FIFO"); 01242 break; 01243 case T_SYMLINK: strcpy (target_type_name, "SYMLINK"); 01244 break; 01245 case T_FD: strcpy (target_type_name, "FD"); 01246 break; 01247 case T_DEV: strcpy (target_type_name, "DEV"); 01248 break; 01249 case T_NETOBJ: strcpy (target_type_name, "NETOBJ"); 01250 break; 01251 case T_IPC: strcpy (target_type_name, "IPC"); 01252 break; 01253 case T_SCD: strcpy (target_type_name, "SCD"); 01254 break; 01255 case T_USER: strcpy (target_type_name, "USER"); 01256 break; 01257 case T_PROCESS: strcpy (target_type_name, "PROCESS"); 01258 break; 01259 case T_GROUP: strcpy (target_type_name, "GROUP"); 01260 break; 01261 case T_NETDEV: strcpy (target_type_name, "NETDEV"); 01262 break; 01263 case T_NETTEMP: strcpy (target_type_name, "NETTEMP"); 01264 break; 01265 case T_NETTEMP_NT: strcpy (target_type_name, "NETTEMP_NT"); 01266 break; 01267 case T_NONE: strcpy (target_type_name, "NONE"); 01268 break; 01269 default: strcpy (target_type_name, "ERROR!!!"); 01270 }; 01271 return(target_type_name); 01272 }
|
|
Definition at line 1274 of file getname.c. References T_NONE, and target_list. 01275 { 01276 enum rsbac_target_t i; 01277 01278 if(!target_name) 01279 return(T_NONE); 01280 for (i = 0; i < T_NONE; i++) 01281 { 01282 if (!strcmp(target_name,target_list[i])) 01283 { 01284 return(i); 01285 } 01286 } 01287 return(T_NONE); 01288 }
|
|
Definition at line 93 of file getname.c. Referenced by get_attr_module(). |
|
Definition at line 224 of file getname.c. Referenced by get_attribute_name(), and get_attribute_nr(). |
|
Definition at line 466 of file getname.c. Referenced by get_attribute_param(). |
|
Definition at line 569 of file getname.c. Referenced by get_cap_name(), and get_cap_nr(). |
|
Definition at line 402 of file getname.c. Referenced by get_error_name(). |
|
Initial value: { "sem", "msg", "shm", "anonpipe", "mqueue", "none" } Definition at line 374 of file getname.c. Referenced by get_ipc_target_name(), and get_ipc_target_nr(). |
|
Initial value: { "none", "denied", "full", "request", "invalid!" } Definition at line 562 of file getname.c. Referenced by get_log_level_name(), and get_log_level_nr(). |
|
Definition at line 34 of file getname.c. Referenced by get_request_name(), and get_request_nr(). |
|
Initial value: { "NOT_GRANTED", "GRANTED", "DO_NOT_CARE", "UNDEFINED" } Definition at line 87 of file getname.c. Referenced by get_result_name(), and get_result_nr(). |
|
Initial value: { "time_strucs", "clock", "host_id", "net_id", "ioports", "rlimit", "swap", "syslog", "rsbac", "rsbac_log", "other", "kmem", "network", "firewall", "priority", "sysfs", "rsbac_remote_log", "quota", "sysctl", "nfsd", "ksyms", "mlock", "capability", "none" } Definition at line 437 of file getname.c. Referenced by get_scd_type_name(), and get_scd_type_nr(). |
|
Initial value: { "GEN", "MAC", "PM", "DAZ", "FF", "RC", "AUTH", "REG", "ACL", "CAP", "JAIL", "RES", "PAX", "SOFTMODE", "DAC_DISABLE", "UM", "FREEZE", "NONE" } Definition at line 382 of file getname.c. Referenced by get_switch_target_name(), and get_switch_target_nr(). |
|
Initial value: { "FILE", "DIR", "FIFO", "SYMLINK", "DEV", "IPC", "SCD", "USER", "PROCESS", "NETDEV", "NETTEMP", "NETOBJ", "NETTEMP_NT", "GROUP", "FD", "NONE" } Definition at line 356 of file getname.c. Referenced by get_target_nr(). |