亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? services.c

?? xen 3.2.2 源碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
        context_struct_to_string(context, &s, &len);        printk(KERN_ERR "security:  context %s is invalid\n", s);        xfree(s);    }    return rc;}struct convert_context_args {    struct policydb *oldp;    struct policydb *newp;};/* * Convert the values in the security context * structure `c' from the values specified * in the policy `p->oldp' to the values specified * in the policy `p->newp'.  Verify that the * context is valid under the new policy. */static int convert_context(u32 key, struct context *c, void *p){    struct convert_context_args *args;    struct context oldc;    struct role_datum *role;    struct type_datum *typdatum;    struct user_datum *usrdatum;    char *s;    u32 len;    int rc;    args = p;    rc = context_cpy(&oldc, c);    if ( rc )        goto out;    rc = -EINVAL;    /* Convert the user. */    usrdatum = hashtab_search(args->newp->p_users.table,                              args->oldp->p_user_val_to_name[c->user - 1]);    if ( !usrdatum )        goto bad;    c->user = usrdatum->value;    /* Convert the role. */    role = hashtab_search(args->newp->p_roles.table,                          args->oldp->p_role_val_to_name[c->role - 1]);    if ( !role )        goto bad;    c->role = role->value;    /* Convert the type. */    typdatum = hashtab_search(args->newp->p_types.table,                              args->oldp->p_type_val_to_name[c->type - 1]);    if ( !typdatum )        goto bad;    c->type = typdatum->value;    rc = mls_convert_context(args->oldp, args->newp, c);    if ( rc )        goto bad;    /* Check the validity of the new context. */    if ( !policydb_context_isvalid(args->newp, c) )    {        rc = convert_context_handle_invalid_context(&oldc);        if ( rc )            goto bad;    }    context_destroy(&oldc);out:    return rc;bad:    context_struct_to_string(&oldc, &s, &len);    context_destroy(&oldc);    printk(KERN_ERR "security:  invalidating context %s\n", s);    xfree(s);    goto out;}extern void flask_complete_init(void);/** * security_load_policy - Load a security policy configuration. * @data: binary policy data * @len: length of data in bytes * * Load a new set of security policy configuration data, * validate it and convert the SID table as necessary. * This function will flush the access vector cache after * loading the new policy. */int security_load_policy(void *data, size_t len){    struct policydb oldpolicydb, newpolicydb;    struct sidtab oldsidtab, newsidtab;    struct convert_context_args args;    u32 seqno;    int rc = 0;    struct policy_file file = { data, len }, *fp = &file;    LOAD_LOCK;    if ( !ss_initialized )    {        if ( policydb_read(&policydb, fp) )        {            LOAD_UNLOCK;            return -EINVAL;        }        if ( policydb_load_isids(&policydb, &sidtab) )        {            LOAD_UNLOCK;            policydb_destroy(&policydb);            return -EINVAL;        }        policydb_loaded_version = policydb.policyvers;        ss_initialized = 1;        seqno = ++latest_granting;        LOAD_UNLOCK;        avc_ss_reset(seqno);        return 0;    }#if 0    sidtab_hash_eval(&sidtab, "sids");#endif    if ( policydb_read(&newpolicydb, fp) )    {        LOAD_UNLOCK;        return -EINVAL;    }    sidtab_init(&newsidtab);    /* Verify that the existing classes did not change. */    if ( hashtab_map(policydb.p_classes.table, validate_class, &newpolicydb) )    {        printk(KERN_ERR "security:  the definition of an existing "                                                            "class changed\n");        rc = -EINVAL;        goto err;    }    /* Clone the SID table. */    sidtab_shutdown(&sidtab);    if ( sidtab_map(&sidtab, clone_sid, &newsidtab) )    {        rc = -ENOMEM;        goto err;    }    /* Convert the internal representations of contexts       in the new SID table and remove invalid SIDs. */    args.oldp = &policydb;    args.newp = &newpolicydb;    sidtab_map_remove_on_error(&newsidtab, convert_context, &args);    /* Save the old policydb and SID table to free later. */    memcpy(&oldpolicydb, &policydb, sizeof policydb);    sidtab_set(&oldsidtab, &sidtab);    /* Install the new policydb and SID table. */    POLICY_WRLOCK;    memcpy(&policydb, &newpolicydb, sizeof policydb);    sidtab_set(&sidtab, &newsidtab);    seqno = ++latest_granting;    policydb_loaded_version = policydb.policyvers;    POLICY_WRUNLOCK;    LOAD_UNLOCK;    /* Free the old policydb and SID table. */    policydb_destroy(&oldpolicydb);    sidtab_destroy(&oldsidtab);    avc_ss_reset(seqno);    return 0;err:    LOAD_UNLOCK;    sidtab_destroy(&newsidtab);    policydb_destroy(&newpolicydb);    return rc;}/** * security_pirq_sid - Obtain the SID for a physical irq. * @pirq: physical irq * @out_sid: security identifier */int security_pirq_sid(int pirq, u32 *out_sid){    int rc = 0;    struct ocontext *c;    POLICY_RDLOCK;    c = policydb.ocontexts[OCON_PIRQ];        while ( c )    {        if ( c->u.pirq == pirq )            break;        c = c->next;    }    if ( c )    {        if ( !c->sid[0] )        {            rc = sidtab_context_to_sid(&sidtab, &c->context[0], &c->sid[0]);            if ( rc )                goto out;        }        *out_sid = c->sid[0];    }    else    {        *out_sid = SECINITSID_PIRQ;    }out:    POLICY_RDUNLOCK;    return rc;}/** * security_iomem_sid - Obtain the SID for a page of iomem. * @mfn: iomem mfn * @out_sid: security identifier */int security_iomem_sid(unsigned long mfn, u32 *out_sid){    struct ocontext *c;    int rc = 0;    POLICY_RDLOCK;    c = policydb.ocontexts[OCON_IOMEM];    while ( c )    {        if ( c->u.iomem == mfn )            break;        c = c->next;    }    if ( c )    {        if ( !c->sid[0] )        {            rc = sidtab_context_to_sid(&sidtab, &c->context[0], &c->sid[0]);            if ( rc )                goto out;        }        *out_sid = c->sid[0];    }    else    {        *out_sid = SECINITSID_IOMEM;    }out:    POLICY_RDUNLOCK;    return rc;}/** * security_ioport_sid - Obtain the SID for an ioport. * @ioport: ioport * @out_sid: security identifier */int security_ioport_sid(u32 ioport, u32 *out_sid){    struct ocontext *c;    int rc = 0;    POLICY_RDLOCK;    c = policydb.ocontexts[OCON_IOPORT];    while ( c )    {        if ( c->u.ioport == ioport )            break;        c = c->next;    }    if ( c )    {        if ( !c->sid[0] )        {            rc = sidtab_context_to_sid(&sidtab, &c->context[0], &c->sid[0]);            if ( rc )                goto out;        }        *out_sid = c->sid[0];    }    else    {        *out_sid = SECINITSID_IOPORT;    }out:    POLICY_RDUNLOCK;    return rc;}#define SIDS_NEL 25/** * security_get_user_sids - Obtain reachable SIDs for a user. * @fromsid: starting SID * @username: username * @sids: array of reachable SIDs for user * @nel: number of elements in @sids * * Generate the set of SIDs for legal security contexts * for a given user that can be reached by @fromsid. * Set *@sids to point to a dynamically allocated * array containing the set of SIDs.  Set *@nel to the * number of elements in the array. */int security_get_user_sids(u32 fromsid, char *username, u32 **sids, u32 *nel){    struct context *fromcon, usercon;    u32 *mysids, *mysids2, sid;    u32 mynel = 0, maxnel = SIDS_NEL;    struct user_datum *user;    struct role_datum *role;    struct av_decision avd;    struct ebitmap_node *rnode, *tnode;    int rc = 0, i, j;    if ( !ss_initialized )    {        *sids = NULL;        *nel = 0;        goto out;    }    POLICY_RDLOCK;    fromcon = sidtab_search(&sidtab, fromsid);    if ( !fromcon )    {        rc = -EINVAL;        goto out_unlock;    }    user = hashtab_search(policydb.p_users.table, username);    if ( !user )    {        rc = -EINVAL;        goto out_unlock;    }    usercon.user = user->value;    mysids = xmalloc_array(u32, maxnel);    if ( !mysids )    {        rc = -ENOMEM;        goto out_unlock;    }    memset(mysids, 0, maxnel*sizeof(*mysids));    ebitmap_for_each_bit(&user->roles, rnode, i)    {        if ( !ebitmap_node_get_bit(rnode, i) )            continue;        role = policydb.role_val_to_struct[i];        usercon.role = i+1;        ebitmap_for_each_bit(&role->types, tnode, j) {            if ( !ebitmap_node_get_bit(tnode, j) )                continue;            usercon.type = j+1;            if ( mls_setup_user_range(fromcon, user, &usercon) )                continue;            rc = context_struct_compute_av(fromcon, &usercon,                               SECCLASS_DOMAIN,                               DOMAIN__TRANSITION,                               &avd);            if ( rc ||  !(avd.allowed & DOMAIN__TRANSITION) )                continue;            rc = sidtab_context_to_sid(&sidtab, &usercon, &sid);            if ( rc )            {                xfree(mysids);                goto out_unlock;            }            if ( mynel < maxnel )            {                mysids[mynel++] = sid;            }            else            {                maxnel += SIDS_NEL;                mysids2 = xmalloc_array(u32, maxnel);                if ( !mysids2 )                {                    rc = -ENOMEM;                    xfree(mysids);                    goto out_unlock;                }                memset(mysids2, 0, maxnel*sizeof(*mysids2));                memcpy(mysids2, mysids, mynel * sizeof(*mysids2));                xfree(mysids);                mysids = mysids2;                mysids[mynel++] = sid;            }        }    }    *sids = mysids;    *nel = mynel;out_unlock:    POLICY_RDUNLOCK;out:    return rc;}int security_get_bools(int *len, char ***names, int **values){    int i, rc = -ENOMEM;    POLICY_RDLOCK;    *names = NULL;    *values = NULL;    *len = policydb.p_bools.nprim;    if ( !*len )    {        rc = 0;        goto out;    }    *names = (char**)xmalloc_array(char*, *len);    if ( !*names )        goto err;    memset(*names, 0, sizeof(char*) * *len);    *values = (int*)xmalloc_array(int, *len);    if ( !*values )        goto err;    for ( i = 0; i < *len; i++ )    {        size_t name_len;        (*values)[i] = policydb.bool_val_to_struct[i]->state;        name_len = strlen(policydb.p_bool_val_to_name[i]) + 1;        (*names)[i] = (char*)xmalloc_array(char, name_len);        if ( !(*names)[i] )            goto err;        strlcpy((*names)[i], policydb.p_bool_val_to_name[i], name_len);        (*names)[i][name_len - 1] = 0;    }    rc = 0;out:    POLICY_RDUNLOCK;    return rc;err:    if ( *names )    {        for ( i = 0; i < *len; i++ )            xfree((*names)[i]);    }    xfree(*values);    goto out;}int security_set_bools(int len, int *values){    int i, rc = 0;    int lenp, seqno = 0;    struct cond_node *cur;    POLICY_WRLOCK;    lenp = policydb.p_bools.nprim;    if ( len != lenp )    {        rc = -EFAULT;        goto out;    }    printk(KERN_INFO "security: committed booleans { ");    for ( i = 0; i < len; i++ )    {        if ( values[i] )        {            policydb.bool_val_to_struct[i]->state = 1;        }        else        {            policydb.bool_val_to_struct[i]->state = 0;        }        if ( i != 0 )            printk(", ");        printk("%s:%d", policydb.p_bool_val_to_name[i],               policydb.bool_val_to_struct[i]->state);    }    printk(" }\n");    for ( cur = policydb.cond_list; cur != NULL; cur = cur->next )    {        rc = evaluate_cond_node(&policydb, cur);        if ( rc )            goto out;    }    seqno = ++latest_granting;out:    POLICY_WRUNLOCK;    if ( !rc )    {        avc_ss_reset(seqno);    }    return rc;}int security_get_bool_value(int bool){    int rc = 0;    int len;    POLICY_RDLOCK;    len = policydb.p_bools.nprim;    if ( bool >= len )    {        rc = -EFAULT;        goto out;    }    rc = policydb.bool_val_to_struct[bool]->state;out:    POLICY_RDUNLOCK;    return rc;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产欧美在线| 国产精品乡下勾搭老头1| 日本亚洲电影天堂| av影院午夜一区| 欧美不卡一区二区三区| 亚洲免费视频成人| 夫妻av一区二区| 日韩免费看的电影| 一区二区三区在线播| 国产高清亚洲一区| 欧美变态口味重另类| 天使萌一区二区三区免费观看| 粉嫩av一区二区三区| 欧美va亚洲va香蕉在线| 婷婷六月综合网| 色综合久久综合网欧美综合网| 国产偷v国产偷v亚洲高清| 蜜桃一区二区三区在线观看| 色av成人天堂桃色av| 1000部国产精品成人观看| 国产高清无密码一区二区三区| 欧美videos大乳护士334| 亚洲超碰97人人做人人爱| 91麻豆国产福利在线观看| 国产精品久久久久永久免费观看 | 爽爽淫人综合网网站| 99久久免费精品| 中文字幕中文字幕一区二区| 懂色av中文字幕一区二区三区| 欧美www视频| 精品亚洲porn| 日韩一区二区三区观看| 日韩电影在线免费| 欧美一区二区在线看| 美女视频一区二区| 日韩欧美激情一区| 精品一区二区三区在线观看| 欧美成人一区二区三区片免费 | av电影天堂一区二区在线| 国产日本一区二区| 成人综合激情网| 国产精品福利一区二区三区| va亚洲va日韩不卡在线观看| 国产精品素人一区二区| 色综合一个色综合亚洲| 亚洲一区二区三区国产| 3d动漫精品啪啪一区二区竹菊| 日韩电影一区二区三区四区| 日韩欧美专区在线| 顶级嫩模精品视频在线看| 中文字幕一区二区三区不卡在线| av亚洲精华国产精华精华| 一区二区三区美女| 宅男在线国产精品| 国产在线精品视频| 中文字幕在线不卡一区二区三区 | 亚洲自拍偷拍图区| 欧美一区二区三级| 国产成人高清视频| 亚洲免费在线视频一区 二区| 欧美午夜精品电影| 久久99精品久久久久久国产越南 | 亚洲人xxxx| 欧美一区二区视频在线观看| 国产精品一区二区视频| 亚洲欧美日韩国产手机在线| 51久久夜色精品国产麻豆| 国产suv精品一区二区三区| 亚洲免费在线观看| 精品久久国产字幕高潮| www.日韩在线| 青青国产91久久久久久| 亚洲国产精品99久久久久久久久| 欧美在线观看18| 国产毛片精品视频| 亚洲大尺度视频在线观看| 国产拍欧美日韩视频二区| 91福利在线免费观看| 国产一区二区三区高清播放| 一区二区三区日韩| 久久中文字幕电影| 欧美日韩美女一区二区| 成年人国产精品| 久久精品国产77777蜜臀| 亚洲免费观看高清完整版在线| 精品福利一二区| 欧美性猛交xxxx黑人交| 高清成人免费视频| 免费成人在线播放| 一区二区三区四区国产精品| 久久精品日产第一区二区三区高清版 | 欧美aaa在线| 亚洲自拍与偷拍| 亚洲日本丝袜连裤袜办公室| 久久精品夜色噜噜亚洲a∨| 欧美日韩三级在线| 色狠狠色狠狠综合| 91丝袜国产在线播放| 不卡欧美aaaaa| 国产精品99久久不卡二区| 欧美a级理论片| 日韩福利电影在线观看| 亚洲成人综合网站| 亚洲制服丝袜av| 亚洲女子a中天字幕| 一区精品在线播放| 中文字幕av资源一区| 国产日韩在线不卡| 精品久久久久久最新网址| 欧美精品少妇一区二区三区| 欧美性感一区二区三区| 欧美日韩一区二区欧美激情| 精品视频123区在线观看| 色悠悠亚洲一区二区| 色婷婷国产精品综合在线观看| 99视频在线精品| 91在线视频免费观看| 成人一级片在线观看| 成人av集中营| 91首页免费视频| 在线视频观看一区| 欧美日免费三级在线| 欧美疯狂性受xxxxx喷水图片| 欧美人牲a欧美精品| 欧美一级在线视频| 精品国产91亚洲一区二区三区婷婷| 久久综合久久久久88| 国产日本欧美一区二区| 中文字幕日韩一区二区| 亚洲另类在线一区| 日日夜夜精品免费视频| 激情综合网最新| 成人免费视频caoporn| 欧美性大战久久| 日韩欧美在线不卡| 国产女人水真多18毛片18精品视频 | 亚洲一二三四区| 免费成人在线观看| 国产成人精品免费| 91成人在线观看喷潮| 91精品国产欧美一区二区成人| 日韩欧美资源站| 亚洲色图在线播放| 日韩影视精彩在线| 国产91在线看| 欧美色爱综合网| 2014亚洲片线观看视频免费| 中文字幕在线观看不卡视频| 日韩高清中文字幕一区| 国产福利一区二区三区| 国产亚洲美州欧州综合国| 欧美激情在线一区二区| 亚洲在线观看免费| 国产精品资源在线看| 色婷婷综合久久久久中文一区二区 | 国产大陆亚洲精品国产| 欧美写真视频网站| 久久久99免费| 亚洲国产综合色| 高清在线不卡av| 欧美一区二区免费观在线| 亚洲欧洲成人av每日更新| 日本中文字幕一区| www.性欧美| 久久久www成人免费无遮挡大片| 亚洲精品国产视频| 国产精品香蕉一区二区三区| 欧美精品在线视频| 综合婷婷亚洲小说| 国产乱一区二区| 日韩情涩欧美日韩视频| 亚洲国产精品久久人人爱 | 捆绑调教美女网站视频一区| 色婷婷香蕉在线一区二区| 久久香蕉国产线看观看99| 亚洲成人一区在线| 色综合天天综合网天天看片| 精品久久五月天| 毛片av一区二区三区| 精品视频在线看| 亚洲欧美成人一区二区三区| 国产99久久久国产精品免费看| 91精品国产综合久久香蕉的特点| 亚洲人成精品久久久久久| 丁香婷婷综合五月| 国产偷国产偷亚洲高清人白洁| 精品写真视频在线观看| 欧美一卡2卡3卡4卡| 日韩国产精品91| 欧美一区二区三区在| 视频一区欧美精品| 欧美精品一级二级三级| 亚洲成av人片一区二区三区| 91久久精品一区二区| 有码一区二区三区| 色诱亚洲精品久久久久久| 曰韩精品一区二区| 91麻豆swag| 一区二区三区不卡视频| 91免费看片在线观看|