| 459 | } |
| 460 | |
| 461 | int |
| 462 | sys_cap_ioctls_limit(struct thread *td, struct cap_ioctls_limit_args *uap) |
| 463 | { |
| 464 | u_long *cmds; |
| 465 | size_t ncmds; |
| 466 | int error; |
| 467 | |
| 468 | ncmds = uap->ncmds; |
| 469 | |
| 470 | if (ncmds > IOCTLS_MAX_COUNT) |
| 471 | return (EINVAL); |
| 472 | |
| 473 | if (ncmds == 0) { |
| 474 | cmds = NULL; |
| 475 | } else { |
| 476 | cmds = malloc(sizeof(cmds[0]) * ncmds, M_FILECAPS, M_WAITOK); |
| 477 | error = copyin(uap->cmds, cmds, sizeof(cmds[0]) * ncmds); |
| 478 | if (error != 0) { |
| 479 | free(cmds, M_FILECAPS); |
| 480 | return (error); |
| 481 | } |
| 482 | } |
| 483 | |
| 484 | return (kern_cap_ioctls_limit(td, uap->fd, cmds, ncmds)); |
| 485 | } |
| 486 | |
| 487 | int |
| 488 | sys_cap_ioctls_get(struct thread *td, struct cap_ioctls_get_args *uap) |
nothing calls this directly
no test coverage detected