mirror of https://github.com/FreeRDP/FreeRDP
checks stream size when processing channel data
This commit is contained in:
parent
0af0d3adfa
commit
6bc7da797b
|
@ -91,30 +91,36 @@ BOOL freerdp_channel_send(rdpRdp* rdp, UINT16 channel_id, BYTE* data, int size)
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
void freerdp_channel_process(freerdp* instance, STREAM* s, UINT16 channel_id)
|
||||
BOOL freerdp_channel_process(freerdp* instance, STREAM* s, UINT16 channel_id)
|
||||
{
|
||||
UINT32 length;
|
||||
UINT32 flags;
|
||||
int chunk_length;
|
||||
|
||||
if(stream_get_left(s) < 4)
|
||||
return FALSE;
|
||||
stream_read_UINT32(s, length);
|
||||
stream_read_UINT32(s, flags);
|
||||
chunk_length = stream_get_left(s);
|
||||
|
||||
IFCALL(instance->ReceiveChannelData, instance,
|
||||
channel_id, stream_get_tail(s), chunk_length, flags, length);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void freerdp_channel_peer_process(freerdp_peer* client, STREAM* s, UINT16 channel_id)
|
||||
BOOL freerdp_channel_peer_process(freerdp_peer* client, STREAM* s, UINT16 channel_id)
|
||||
{
|
||||
UINT32 length;
|
||||
UINT32 flags;
|
||||
int chunk_length;
|
||||
|
||||
if(stream_get_left(s) < 8)
|
||||
return FALSE;
|
||||
stream_read_UINT32(s, length);
|
||||
stream_read_UINT32(s, flags);
|
||||
chunk_length = stream_get_left(s);
|
||||
|
||||
IFCALL(client->ReceiveChannelData, client,
|
||||
channel_id, stream_get_tail(s), chunk_length, flags, length);
|
||||
return TRUE;
|
||||
}
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
#define __CHANNEL_H
|
||||
|
||||
BOOL freerdp_channel_send(rdpRdp* rdp, UINT16 channel_id, BYTE* data, int size);
|
||||
void freerdp_channel_process(freerdp* instance, STREAM* s, UINT16 channel_id);
|
||||
void freerdp_channel_peer_process(freerdp_peer* client, STREAM* s, UINT16 channel_id);
|
||||
BOOL freerdp_channel_process(freerdp* instance, STREAM* s, UINT16 channel_id);
|
||||
BOOL freerdp_channel_peer_process(freerdp_peer* client, STREAM* s, UINT16 channel_id);
|
||||
|
||||
#endif /* __CHANNEL_H */
|
||||
|
|
Loading…
Reference in New Issue