我正在编写一个ioctl驱动程序,它需要将数据读写到用户空间。为了可视化,下面是驱动程序调用中的一个典型参数:
typedef struct {
unsigned int* src;
unsigned int* dst;
unsigned int buffer_size;
unsigned int key[8];
} aes_data我不太熟悉虚拟内存的工作原理,但我认为这是有风险的。用户空间进程可以提供一个指向它不拥有的内存的指针。提供的缓冲区大小也可能导致其他进程的内存溢出。如何在驱动程序中负责任地处理这些用户空间指针?
发布于 2017-11-15 11:36:14
如何在驱动程序中负责任地处理这些用户空间指针?
您没有这样做,因为没有方法检查指针是否指向任何有效的内容。由ioctl()的用户提供适当的参数。如果他们不能做到这一点,那他们就倒霉了。
https://stackoverflow.com/questions/47305941
复制相似问题