分页: 1 / 1
[已解决]copy_from_user怎么复制字符串?
发表于 : 2024-01-10 17:48
由 wxf
代码: 全选
int dss_openat(struct pt_regs* regs)
{
//int dfd = regs->di;
char __user* user_filename = regs->si;
int flags = regs->dx;
char filename[256] = { 0 };
copy_from_user(filename, user_filename, sizeof(filename));
......
}
我hook了一个系统调用,想获取打开的文件名。
这样做对吗?我不确定。
按道理,最后一个参数是要复制的字节数,可是没法知道传进来的字符串的长度啊
Re: [求助]copy_from_user怎么复制字符串?
发表于 : 2024-01-10 22:05
由 astolia
复制字符串一般用strncpy_from_user。对路径而言256的缓冲区太小了,linux/limits.h里定义的PATH_MAX都已经是4096了,像ntfs这种支持的路径长度还更长
要通用点可以用strlen_user/strnlen_user来获取字符串长度后再动态分配缓冲区大小
Re: [求助]copy_from_user怎么复制字符串?
发表于 : 2024-01-11 9:22
由 wxf
astolia 写了: ↑2024-01-10 22:05
复制字符串一般用strncpy_from_user。对路径而言256的缓冲区太小了,linux/limits.h里定义的PATH_MAX都已经是4096了,像ntfs这种支持的路径长度还更长
要通用点可以用strlen_user/strnlen_user来获取字符串长度后再动态分配缓冲区大小
多谢了。