免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1964 | 回复: 2
打印 上一主题 下一主题

请教一个关于网络接收函数的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-01-23 09:58 |只看该作者 |倒序浏览
在这个函数,其实还有很多网络处理函数中,security_socket_recvmsg是做什么用的,
为何在调用真正的接收函数之前还需要调用这个函数呢? 就是这儿security前缀的类型函数是干什么的?》

static inline int __sock_recvmsg(struct kiocb *iocb, struct socket *sock,
                                 struct msghdr *msg, size_t size, int flags)
{
        int err;
        struct sock_iocb *si = kiocb_to_siocb(iocb);

        si->sock = sock;
        si->scm = NULL;
        si->msg = msg;
        si->size = size;
        si->flags = flags;

        err = security_socket_recvmsg(sock, msg, size, flags);   
        if (err)
                return err;

        return sock->ops->recvmsg(iocb, sock, msg, size, flags);
}

论坛徽章:
0
2 [报告]
发表于 2010-01-23 12:30 |只看该作者
.socket_recvmsg = selinux_socket_recvmsg->socket_has_perm

/* socket security operations */
static int socket_has_perm(struct task_struct *task, struct socket *sock,
                           u32 perms)
{
        struct inode_security_struct *isec;
        struct task_security_struct *tsec;
        struct avc_audit_data ad;
        int err = 0;

        tsec = task->security;
        isec = SOCK_INODE(sock)->i_security;

        if (isec->sid == SECINITSID_KERNEL)
                goto out;

        AVC_AUDIT_DATA_INIT(&ad,NET);
        ad.u.net.sk = sock->sk;
        err = avc_has_perm(tsec->sid, isec->sid, isec->sclass, perms, &ad);

out:
        return err;
}

具体我也不知道,可能是做审计吧

论坛徽章:
0
3 [报告]
发表于 2010-01-23 22:34 |只看该作者
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP