我正在编写一个需要向用户空间读写数据的ioctl驱动程序。对于可视化,这是驱动程序调用中的典型参数:
typedef struct {
unsigned int* src;
unsigned int* dst;
unsigned int buffer_size;
unsigned int key[8];
} aes_data
我对虚拟内存的运作方式并不十分熟悉,但我认为这里存在风险。用户空间进程可以提供指向它不拥有的内存的指针。提供的缓冲区大小也可能导致其他进程的内存溢出。如何在驱动程序中负责任地处理这些用户空间指针?
答案 0 :(得分:1)
如何在驱动程序中负责任地处理这些用户空间指针?
你不是因为没有办法检查指针是否指向任何有效的东西。由ioctl()的用户提供适当的参数。如果他们不这样做,那么他们就要运气不好。