V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
fengjianxinghun
V2EX  ›  Linux

当调用原始 syscall 填充__user 空间指针后,紧接着访问这个指针是否需要 copy_from_user?

  •  
  •   fengjianxinghun · 2021-08-02 15:07:53 +08:00 · 1065 次点击
    这是一个创建于 1243 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这里我做了 access_ok 检测 msg 指针,安全起见是否需要 copy_from_user ?

            ret = KHOOK_ORIGIN(sys_recvmsg, sockfd, msg, flags);
    
    	/* Some error occured. Don't do anything. */
    	if (ret < 0)
    		return ret;
    
    	/* check __user addr is safe */
    	if (!access_ok(msg, sizeof(struct msghdr)) {
    		return ret;
    	}
    
    	/* Extract netlink message header from message */
    	nlh = (struct nlmsghdr *)(msg->msg_iov->iov_base);
    	if (nlh == NULL) {
    		//printk(KERN_WARNING "nlmsghdr is null");
    		return ret;
    	}
    
    2 条回复    2021-08-11 00:27:44 +08:00
    tomychen
        1
    tomychen  
       2021-08-10 16:14:54 +08:00
    看代码就是,你最终都要操作 msg,为啥不直接调 copy_from_user 一份出来呢?
    fengjianxinghun
        2
    fengjianxinghun  
    OP
       2021-08-11 00:27:44 +08:00
    @tomychen 要修改内容,又需要 copy 回去。就是不想动这个。意味着你拷贝的时候要拷贝 msg 到拷贝 iov_base,这里面的嵌套很讨厌。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2838 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 06:20 · PVG 14:20 · LAX 22:20 · JFK 01:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.