ioctl: print private SIOC* ioctl commands
* ioctl.c [!SIOCPROTOPRIVATE] (SIOCPROTOPRIVATE): New macro constant. [!SIOCDEVPRIVATE] (SIOCDEVPRIVATE): Likewise. [!SIOCIWFIRSTPRIV] (SIOCIWFIRSTPRIV): Likewise. [!SIOCIWLASTPRIV] (SIOCIWLASTPRIV): Likewise. (ioctl_decode_command_number) <SOCK_IOC_TYPE>: Handle protocol-private and device-private ioctl command numbers. <0x8B>: Handle device-private ioctl comamnd numbers. * tests/ioctl.c: Add checks.
This commit is contained in:
parent
d7beb8d758
commit
c8dc2208eb
29
ioctl.c
29
ioctl.c
@ -205,6 +205,19 @@ hiddev_decode_number(const unsigned int code)
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifndef SIOCPROTOPRIVATE
|
||||
# define SIOCPROTOPRIVATE 0x89E0
|
||||
#endif
|
||||
#ifndef SIOCDEVPRIVATE
|
||||
# define SIOCDEVPRIVATE 0x89F0
|
||||
#endif
|
||||
#ifndef SIOCIWFIRSTPRIV
|
||||
# define SIOCIWFIRSTPRIV 0x8BE0
|
||||
#endif
|
||||
#ifndef SIOCIWLASTPRIV
|
||||
# define SIOCIWLASTPRIV 0x8BFF
|
||||
#endif
|
||||
|
||||
static int
|
||||
ioctl_decode_command_number(struct tcb *tcp)
|
||||
{
|
||||
@ -242,6 +255,22 @@ ioctl_decode_command_number(struct tcb *tcp)
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
case SOCK_IOC_TYPE:
|
||||
if (code > SIOCPROTOPRIVATE && code <= SIOCPROTOPRIVATE + 15) {
|
||||
tprintf("SIOCPROTOPRIVATE+%u", code - SIOCPROTOPRIVATE);
|
||||
return 1;
|
||||
}
|
||||
if (code > SIOCDEVPRIVATE && code <= SIOCDEVPRIVATE + 15) {
|
||||
tprintf("SIOCDEVPRIVATE+%u", code - SIOCDEVPRIVATE);
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
case 0x8B: /* 802.11 */
|
||||
if (code > SIOCIWFIRSTPRIV && code < SIOCIWLASTPRIV) {
|
||||
tprintf("SIOCIWFIRSTPRIV+%u", code - SIOCIWFIRSTPRIV);
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
|
@ -85,6 +85,27 @@ main(void)
|
||||
printf("ioctl(-1, EVIOCGBIT(EV_KEY, 8), %p)"
|
||||
" = -1 EBADF (%m)\n", &data);
|
||||
|
||||
(void) ioctl(-1, 0x89df, &data);
|
||||
printf("ioctl(-1, _IOC(%s, SOCK_IOC_TYPE, 0xdf, 0), %p)"
|
||||
" = -1 EBADF (%m)\n",
|
||||
_IOC_NONE ? "0" : "_IOC_NONE", &data);
|
||||
|
||||
(void) ioctl(-1, 0x89ef, &data);
|
||||
printf("ioctl(-1, SIOCPROTOPRIVATE+15, %p) = -1 EBADF (%m)\n", &data);
|
||||
|
||||
(void) ioctl(-1, 0x89ff, &data);
|
||||
printf("ioctl(-1, SIOCDEVPRIVATE+15, %p) = -1 EBADF (%m)\n", &data);
|
||||
|
||||
(void) ioctl(-1, 0x8bdf, &data);
|
||||
printf("ioctl(-1, _IOC(%s, 0x8b, 0xdf, 0), %p) = -1 EBADF (%m)\n",
|
||||
_IOC_NONE ? "0" : "_IOC_NONE", &data);
|
||||
|
||||
(void) ioctl(-1, 0x8bfe, &data);
|
||||
printf("ioctl(-1, SIOCIWFIRSTPRIV+30, %p) = -1 EBADF (%m)\n", &data);
|
||||
|
||||
(void) ioctl(-1, 0x8bff, &data);
|
||||
printf("ioctl(-1, SIOCIWLASTPRIV, %p) = -1 EBADF (%m)\n", &data);
|
||||
|
||||
(void) ioctl(-1, _IOR('M', 13, int), &data);
|
||||
# ifdef HAVE_STRUCT_MTD_WRITE_REQ
|
||||
printf("ioctl(-1, MIXER_READ(13) or OTPSELECT, [MTD_OTP_OFF])"
|
||||
|
Loading…
x
Reference in New Issue
Block a user