c - 在攻击场景中传递无效输入时处理 memcpy 段错误

标签 c segmentation-fault memcpy

我在这里测试一个守护进程的小问题(用 Linux 编写)。我想知道所做的事情是否正确。

守护进程使用 dlopen 调用加载共享对象文件 (.so)。共享对象通过网络从客户端接收一些缓冲区。它使用以下调用来读取缓冲区:

read_buffer(something, length of buffer read, buffer contents);

read_buffer 函数使用 memcpy 将第二个参数中指定长度的缓冲区复制到另一个位置

在客户端,完成以下操作:

write_buffer(something, length of buffer, buffer contents);

问题是,如果我们发送一个无效的长度参数(与第三个参数中复制的实际长度不匹配),从客户端,memcpy 位置在服务器端存在段错误

我不确定如何输入验证传递给 memcpy 函数的参数

请您帮我了解一下可能的解决方案

最佳答案

要检查 C/C++ 代码的内存分配/访问错误,请使用 Valgrind .服务器端无法(据我所知)确定传递的参数是否有效。这就是 C/C++ 的信条:知道你在做什么,否则你就死了。没有安全网。

关于c - 在攻击场景中传递无效输入时处理 memcpy 段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11078371/

相关文章:

c++ - 带有 PAGE_GUARD 的 VirtualProtect 不使用局部变量

c - linux在c中跨线程连接到相同的sockaddr

c - 无效的内存读取 - Valgrind

c - 在链表中使用指针

c - 使用 pthreads 和 malloc

c++ - 我可以使用 std::copy 将数据的位模式从整数 vector 复制到 unsigned char 数组吗

c - 从未定义长度的文件中读取,存储在数组中,段错误

c++ - 使用 libvlc 的段错误

rust - 装箱类型时是否有最佳实践?

c - 使用 OpenMP 并行化 memcpy