分页: 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来获取字符串长度后再动态分配缓冲区大小
多谢了。