linux - 参数类型 : "const char __user *const __user *argv" 的含义是什么

标签 linux linux-kernel kernel system-calls execve

我在 execve 系统调用中看到了这种类型:

asmlinkage long sys_execve(const char __user *filename,
const char __user *const __user *argv,
const char __user *const __user *envp);


do_execve(struct filename *filename,
const char __user *const __user *__argv,
const char __user *const __user *__envp)

是什么意思
const char __user *const __user *

?

最佳答案

当您通读 file_operations 方法列表时,您会注意到许多参数包括 string __user。该注解是一种文档形式,指出指针是不能直接访问的用户空间地址 取消引用。对于正常的编译,__user没有作用,但是可以被 用于查找用户空间地址滥用情况的外部检查软件。

关于linux - 参数类型 : "const char __user *const __user *argv" 的含义是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45405442/

相关文章:

linux-kernel - inode 编号正在更改

linux - 我的第一个简单的 cgi bash 文件

linux - lxc-start : utils. c: safe_mount: 1746 没有这样的文件或目录 - 无法将/lib64 挂载到/usr/lib/i386-linux-gnu/lxc/lib64

linux - kvm 中如何进行设备模拟

Windows 内核 ReadProcessMemory()/WriteProcessMemory()?

paging - 页面错误后重新启动指令

linux kernel crypto API,在AES-GCM算法中如何设置aad的长度为零位?

android - 如何为 Android 设备编写非常简单的 native SERVER 程序(不是应用程序)?

node.js - 允许非 root 用户 process.setuid 给某些其他用户

linux - 简单——使用 cronjob 运行 shell 脚本