已合并
socket ioctl中FIONREAD 是旧式 ioctl 命令,未校验用户地址范围 #1424
yang-pangyuan创建于 6月24日
socket ioctl中FIONREAD 是旧式 ioctl 命令,未校验用户地址范围 #1424
已合并
yang-pangyuan创建于 6月24日
1 个文件变更+6-0
@@ -1633,6 +1633,12 @@ int socks_ioctl(int sockfd, long cmd, void *argp)
1633 int ret;1633 int ret;
1634 size_t nbytes = 0;1634 size_t nbytes = 0;
1635 1635 
1636+ if (cmd == FIONREAD || cmd == FIONBIO) {
1637+ if (!LOS_IsUserAddress((VADDR_T)(uintptr_t)argp)) {
1638+ set_errno(EFAULT);
1639+ ret = -1;
1640+ }
1641+ }
1636 if (LOS_IsUserAddress((VADDR_T)(uintptr_t)argp)) {1642 if (LOS_IsUserAddress((VADDR_T)(uintptr_t)argp)) {
1637 switch (cmd) {1643 switch (cmd) {
1638 case FIONREAD:1644 case FIONREAD: