Merge pull request #3282 from akallabeth/input_arg_checks
Added argument checks for exported input functions.
This commit is contained in:
commit
f828595609
@ -69,7 +69,12 @@ static void input_write_synchronize_event(wStream* s, UINT32 flags)
|
|||||||
BOOL input_send_synchronize_event(rdpInput* input, UINT32 flags)
|
BOOL input_send_synchronize_event(rdpInput* input, UINT32 flags)
|
||||||
{
|
{
|
||||||
wStream* s;
|
wStream* s;
|
||||||
rdpRdp* rdp = input->context->rdp;
|
rdpRdp* rdp;
|
||||||
|
|
||||||
|
if (!input || !input->context)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
rdp = input->context->rdp;
|
||||||
|
|
||||||
s = rdp_client_input_pdu_init(rdp, INPUT_EVENT_SYNC);
|
s = rdp_client_input_pdu_init(rdp, INPUT_EVENT_SYNC);
|
||||||
if (!s)
|
if (!s)
|
||||||
@ -88,7 +93,12 @@ static void input_write_keyboard_event(wStream* s, UINT16 flags, UINT16 code)
|
|||||||
BOOL input_send_keyboard_event(rdpInput* input, UINT16 flags, UINT16 code)
|
BOOL input_send_keyboard_event(rdpInput* input, UINT16 flags, UINT16 code)
|
||||||
{
|
{
|
||||||
wStream* s;
|
wStream* s;
|
||||||
rdpRdp* rdp = input->context->rdp;
|
rdpRdp* rdp;
|
||||||
|
|
||||||
|
if (!input || !input->context)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
rdp = input->context->rdp;
|
||||||
|
|
||||||
s = rdp_client_input_pdu_init(rdp, INPUT_EVENT_SCANCODE);
|
s = rdp_client_input_pdu_init(rdp, INPUT_EVENT_SCANCODE);
|
||||||
if (!s)
|
if (!s)
|
||||||
@ -108,7 +118,12 @@ BOOL input_send_unicode_keyboard_event(rdpInput* input, UINT16 flags, UINT16 cod
|
|||||||
{
|
{
|
||||||
wStream* s;
|
wStream* s;
|
||||||
UINT16 keyboardFlags = 0;
|
UINT16 keyboardFlags = 0;
|
||||||
rdpRdp* rdp = input->context->rdp;
|
rdpRdp* rdp;
|
||||||
|
|
||||||
|
if (!input || !input->context)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
rdp = input->context->rdp;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* According to the specification, the slow path Unicode Keyboard Event
|
* According to the specification, the slow path Unicode Keyboard Event
|
||||||
@ -138,7 +153,12 @@ void input_write_mouse_event(wStream* s, UINT16 flags, UINT16 x, UINT16 y)
|
|||||||
BOOL input_send_mouse_event(rdpInput* input, UINT16 flags, UINT16 x, UINT16 y)
|
BOOL input_send_mouse_event(rdpInput* input, UINT16 flags, UINT16 x, UINT16 y)
|
||||||
{
|
{
|
||||||
wStream* s;
|
wStream* s;
|
||||||
rdpRdp* rdp = input->context->rdp;
|
rdpRdp* rdp;
|
||||||
|
|
||||||
|
if (!input || !input->context)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
rdp = input->context->rdp;
|
||||||
|
|
||||||
s = rdp_client_input_pdu_init(rdp, INPUT_EVENT_MOUSE);
|
s = rdp_client_input_pdu_init(rdp, INPUT_EVENT_MOUSE);
|
||||||
if (!s)
|
if (!s)
|
||||||
@ -157,7 +177,12 @@ static void input_write_extended_mouse_event(wStream* s, UINT16 flags, UINT16 x,
|
|||||||
BOOL input_send_extended_mouse_event(rdpInput* input, UINT16 flags, UINT16 x, UINT16 y)
|
BOOL input_send_extended_mouse_event(rdpInput* input, UINT16 flags, UINT16 x, UINT16 y)
|
||||||
{
|
{
|
||||||
wStream* s;
|
wStream* s;
|
||||||
rdpRdp* rdp = input->context->rdp;
|
rdpRdp* rdp;
|
||||||
|
|
||||||
|
if (!input || !input->context)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
rdp = input->context->rdp;
|
||||||
|
|
||||||
s = rdp_client_input_pdu_init(rdp, INPUT_EVENT_MOUSEX);
|
s = rdp_client_input_pdu_init(rdp, INPUT_EVENT_MOUSEX);
|
||||||
if (!s)
|
if (!s)
|
||||||
@ -210,7 +235,12 @@ BOOL input_send_keyboard_pause_event(rdpInput* input)
|
|||||||
BOOL input_send_fastpath_synchronize_event(rdpInput* input, UINT32 flags)
|
BOOL input_send_fastpath_synchronize_event(rdpInput* input, UINT32 flags)
|
||||||
{
|
{
|
||||||
wStream* s;
|
wStream* s;
|
||||||
rdpRdp* rdp = input->context->rdp;
|
rdpRdp* rdp;
|
||||||
|
|
||||||
|
if (!input || !input->context)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
rdp = input->context->rdp;
|
||||||
|
|
||||||
/* The FastPath Synchronization eventFlags has identical values as SlowPath */
|
/* The FastPath Synchronization eventFlags has identical values as SlowPath */
|
||||||
s = fastpath_input_pdu_init(rdp->fastpath, (BYTE) flags, FASTPATH_INPUT_EVENT_SYNC);
|
s = fastpath_input_pdu_init(rdp->fastpath, (BYTE) flags, FASTPATH_INPUT_EVENT_SYNC);
|
||||||
@ -223,7 +253,12 @@ BOOL input_send_fastpath_keyboard_event(rdpInput* input, UINT16 flags, UINT16 co
|
|||||||
{
|
{
|
||||||
wStream* s;
|
wStream* s;
|
||||||
BYTE eventFlags = 0;
|
BYTE eventFlags = 0;
|
||||||
rdpRdp* rdp = input->context->rdp;
|
rdpRdp* rdp;
|
||||||
|
|
||||||
|
if (!input || !input->context)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
rdp = input->context->rdp;
|
||||||
|
|
||||||
eventFlags |= (flags & KBD_FLAGS_RELEASE) ? FASTPATH_INPUT_KBDFLAGS_RELEASE : 0;
|
eventFlags |= (flags & KBD_FLAGS_RELEASE) ? FASTPATH_INPUT_KBDFLAGS_RELEASE : 0;
|
||||||
eventFlags |= (flags & KBD_FLAGS_EXTENDED) ? FASTPATH_INPUT_KBDFLAGS_EXTENDED : 0;
|
eventFlags |= (flags & KBD_FLAGS_EXTENDED) ? FASTPATH_INPUT_KBDFLAGS_EXTENDED : 0;
|
||||||
@ -238,7 +273,12 @@ BOOL input_send_fastpath_unicode_keyboard_event(rdpInput* input, UINT16 flags, U
|
|||||||
{
|
{
|
||||||
wStream* s;
|
wStream* s;
|
||||||
BYTE eventFlags = 0;
|
BYTE eventFlags = 0;
|
||||||
rdpRdp* rdp = input->context->rdp;
|
rdpRdp* rdp;
|
||||||
|
|
||||||
|
if (!input || !input->context)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
rdp = input->context->rdp;
|
||||||
|
|
||||||
eventFlags |= (flags & KBD_FLAGS_RELEASE) ? FASTPATH_INPUT_KBDFLAGS_RELEASE : 0;
|
eventFlags |= (flags & KBD_FLAGS_RELEASE) ? FASTPATH_INPUT_KBDFLAGS_RELEASE : 0;
|
||||||
s = fastpath_input_pdu_init(rdp->fastpath, eventFlags, FASTPATH_INPUT_EVENT_UNICODE);
|
s = fastpath_input_pdu_init(rdp->fastpath, eventFlags, FASTPATH_INPUT_EVENT_UNICODE);
|
||||||
@ -251,7 +291,12 @@ BOOL input_send_fastpath_unicode_keyboard_event(rdpInput* input, UINT16 flags, U
|
|||||||
BOOL input_send_fastpath_mouse_event(rdpInput* input, UINT16 flags, UINT16 x, UINT16 y)
|
BOOL input_send_fastpath_mouse_event(rdpInput* input, UINT16 flags, UINT16 x, UINT16 y)
|
||||||
{
|
{
|
||||||
wStream* s;
|
wStream* s;
|
||||||
rdpRdp* rdp = input->context->rdp;
|
rdpRdp* rdp;
|
||||||
|
|
||||||
|
if (!input || !input->context)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
rdp = input->context->rdp;
|
||||||
|
|
||||||
s = fastpath_input_pdu_init(rdp->fastpath, 0, FASTPATH_INPUT_EVENT_MOUSE);
|
s = fastpath_input_pdu_init(rdp->fastpath, 0, FASTPATH_INPUT_EVENT_MOUSE);
|
||||||
if (!s)
|
if (!s)
|
||||||
@ -263,7 +308,12 @@ BOOL input_send_fastpath_mouse_event(rdpInput* input, UINT16 flags, UINT16 x, UI
|
|||||||
BOOL input_send_fastpath_extended_mouse_event(rdpInput* input, UINT16 flags, UINT16 x, UINT16 y)
|
BOOL input_send_fastpath_extended_mouse_event(rdpInput* input, UINT16 flags, UINT16 x, UINT16 y)
|
||||||
{
|
{
|
||||||
wStream* s;
|
wStream* s;
|
||||||
rdpRdp* rdp = input->context->rdp;
|
rdpRdp* rdp;
|
||||||
|
|
||||||
|
if (!input || !input->context)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
rdp = input->context->rdp;
|
||||||
|
|
||||||
s = fastpath_input_pdu_init(rdp->fastpath, 0, FASTPATH_INPUT_EVENT_MOUSEX);
|
s = fastpath_input_pdu_init(rdp->fastpath, 0, FASTPATH_INPUT_EVENT_MOUSEX);
|
||||||
if (!s)
|
if (!s)
|
||||||
@ -275,8 +325,13 @@ BOOL input_send_fastpath_extended_mouse_event(rdpInput* input, UINT16 flags, UIN
|
|||||||
BOOL input_send_fastpath_focus_in_event(rdpInput* input, UINT16 toggleStates)
|
BOOL input_send_fastpath_focus_in_event(rdpInput* input, UINT16 toggleStates)
|
||||||
{
|
{
|
||||||
wStream* s;
|
wStream* s;
|
||||||
rdpRdp* rdp = input->context->rdp;
|
|
||||||
BYTE eventFlags = 0;
|
BYTE eventFlags = 0;
|
||||||
|
rdpRdp* rdp;
|
||||||
|
|
||||||
|
if (!input || !input->context)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
rdp = input->context->rdp;
|
||||||
|
|
||||||
s = fastpath_input_pdu_init_header(rdp->fastpath);
|
s = fastpath_input_pdu_init_header(rdp->fastpath);
|
||||||
if (!s)
|
if (!s)
|
||||||
@ -305,10 +360,15 @@ BOOL input_send_fastpath_keyboard_pause_event(rdpInput* input)
|
|||||||
* it sending the following sequence:
|
* it sending the following sequence:
|
||||||
*/
|
*/
|
||||||
wStream* s;
|
wStream* s;
|
||||||
rdpRdp* rdp = input->context->rdp;
|
|
||||||
const BYTE keyDownEvent = FASTPATH_INPUT_EVENT_SCANCODE << 5;
|
const BYTE keyDownEvent = FASTPATH_INPUT_EVENT_SCANCODE << 5;
|
||||||
const BYTE keyUpEvent = (FASTPATH_INPUT_EVENT_SCANCODE << 5)
|
const BYTE keyUpEvent = (FASTPATH_INPUT_EVENT_SCANCODE << 5)
|
||||||
| FASTPATH_INPUT_KBDFLAGS_RELEASE;
|
| FASTPATH_INPUT_KBDFLAGS_RELEASE;
|
||||||
|
rdpRdp* rdp;
|
||||||
|
|
||||||
|
if (!input || !input->context)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
rdp = input->context->rdp;
|
||||||
|
|
||||||
s = fastpath_input_pdu_init_header(rdp->fastpath);
|
s = fastpath_input_pdu_init_header(rdp->fastpath);
|
||||||
if (!s)
|
if (!s)
|
||||||
@ -479,6 +539,9 @@ BOOL input_recv(rdpInput* input, wStream* s)
|
|||||||
{
|
{
|
||||||
UINT16 i, numberEvents;
|
UINT16 i, numberEvents;
|
||||||
|
|
||||||
|
if (!input || !s)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
if (Stream_GetRemainingLength(s) < 4)
|
if (Stream_GetRemainingLength(s) < 4)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
@ -500,7 +563,15 @@ BOOL input_recv(rdpInput* input, wStream* s)
|
|||||||
|
|
||||||
BOOL input_register_client_callbacks(rdpInput* input)
|
BOOL input_register_client_callbacks(rdpInput* input)
|
||||||
{
|
{
|
||||||
rdpSettings* settings = input->context->settings;
|
rdpSettings* settings;
|
||||||
|
|
||||||
|
if (!input || !input->context)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
settings = input->context->settings;
|
||||||
|
|
||||||
|
if (!settings)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
if (settings->FastPathInput)
|
if (settings->FastPathInput)
|
||||||
{
|
{
|
||||||
@ -536,11 +607,17 @@ BOOL input_register_client_callbacks(rdpInput* input)
|
|||||||
|
|
||||||
BOOL freerdp_input_send_synchronize_event(rdpInput* input, UINT32 flags)
|
BOOL freerdp_input_send_synchronize_event(rdpInput* input, UINT32 flags)
|
||||||
{
|
{
|
||||||
|
if (!input)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
return IFCALLRESULT(TRUE, input->SynchronizeEvent, input, flags);
|
return IFCALLRESULT(TRUE, input->SynchronizeEvent, input, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL freerdp_input_send_keyboard_event(rdpInput* input, UINT16 flags, UINT16 code)
|
BOOL freerdp_input_send_keyboard_event(rdpInput* input, UINT16 flags, UINT16 code)
|
||||||
{
|
{
|
||||||
|
if (!input)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
return IFCALLRESULT(TRUE, input->KeyboardEvent, input, flags, code);
|
return IFCALLRESULT(TRUE, input->KeyboardEvent, input, flags, code);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -554,31 +631,49 @@ BOOL freerdp_input_send_keyboard_event_ex(rdpInput* input, BOOL down, UINT32 rdp
|
|||||||
|
|
||||||
BOOL freerdp_input_send_unicode_keyboard_event(rdpInput* input, UINT16 flags, UINT16 code)
|
BOOL freerdp_input_send_unicode_keyboard_event(rdpInput* input, UINT16 flags, UINT16 code)
|
||||||
{
|
{
|
||||||
|
if (!input)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
return IFCALLRESULT(TRUE, input->UnicodeKeyboardEvent, input, flags, code);
|
return IFCALLRESULT(TRUE, input->UnicodeKeyboardEvent, input, flags, code);
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL freerdp_input_send_mouse_event(rdpInput* input, UINT16 flags, UINT16 x, UINT16 y)
|
BOOL freerdp_input_send_mouse_event(rdpInput* input, UINT16 flags, UINT16 x, UINT16 y)
|
||||||
{
|
{
|
||||||
|
if (!input)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
return IFCALLRESULT(TRUE, input->MouseEvent, input, flags, x, y);
|
return IFCALLRESULT(TRUE, input->MouseEvent, input, flags, x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL freerdp_input_send_extended_mouse_event(rdpInput* input, UINT16 flags, UINT16 x, UINT16 y)
|
BOOL freerdp_input_send_extended_mouse_event(rdpInput* input, UINT16 flags, UINT16 x, UINT16 y)
|
||||||
{
|
{
|
||||||
|
if (!input)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
return IFCALLRESULT(TRUE, input->ExtendedMouseEvent, input, flags, x, y);
|
return IFCALLRESULT(TRUE, input->ExtendedMouseEvent, input, flags, x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL freerdp_input_send_focus_in_event(rdpInput* input, UINT16 toggleStates)
|
BOOL freerdp_input_send_focus_in_event(rdpInput* input, UINT16 toggleStates)
|
||||||
{
|
{
|
||||||
|
if (!input)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
return IFCALLRESULT(TRUE, input->FocusInEvent, input, toggleStates);
|
return IFCALLRESULT(TRUE, input->FocusInEvent, input, toggleStates);
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL freerdp_input_send_keyboard_pause_event(rdpInput* input)
|
BOOL freerdp_input_send_keyboard_pause_event(rdpInput* input)
|
||||||
{
|
{
|
||||||
|
if (!input)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
return IFCALLRESULT(TRUE, input->KeyboardPauseEvent, input);
|
return IFCALLRESULT(TRUE, input->KeyboardPauseEvent, input);
|
||||||
}
|
}
|
||||||
|
|
||||||
int input_process_events(rdpInput* input)
|
int input_process_events(rdpInput* input)
|
||||||
{
|
{
|
||||||
|
if (!input)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
return input_message_queue_process_pending_messages(input);
|
return input_message_queue_process_pending_messages(input);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user