From 6e213bc61bb8298579cc942a504ef95f66d84e2f Mon Sep 17 00:00:00 2001 From: Armin Novak Date: Tue, 21 Apr 2015 12:09:44 +0200 Subject: [PATCH] Modified GetEventHandles of listener Now using nCount as in and out argument. When called, set nCount to the number of available handles. This value is checked and an error returned, if not enough handles are available. --- libfreerdp/core/listener.c | 4 ++++ server/Sample/sfreerdp.c | 2 +- server/shadow/shadow_server.c | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/libfreerdp/core/listener.c b/libfreerdp/core/listener.c index 88be8ed54..d8551473c 100644 --- a/libfreerdp/core/listener.c +++ b/libfreerdp/core/listener.c @@ -258,11 +258,15 @@ static BOOL freerdp_listener_get_fds(freerdp_listener* instance, void** rfds, in int freerdp_listener_get_event_handles(freerdp_listener* instance, HANDLE* events, DWORD* nCount) { int index; + DWORD count = *nCount; rdpListener* listener = (rdpListener*) instance->listener; if (listener->num_sockfds < 1) return -1; + if (listener->num_sockfds > count) + return -1; + for (index = 0; index < listener->num_sockfds; index++) { events[*nCount] = listener->events[index]; diff --git a/server/Sample/sfreerdp.c b/server/Sample/sfreerdp.c index 19ee553c0..4c8b3d02d 100644 --- a/server/Sample/sfreerdp.c +++ b/server/Sample/sfreerdp.c @@ -744,7 +744,7 @@ static void test_server_mainloop(freerdp_listener* instance) while (1) { - count = 0; + count = 32; if (instance->GetEventHandles(instance, handles, &count)) { diff --git a/server/shadow/shadow_server.c b/server/shadow/shadow_server.c index a0c560a19..38cbfbfff 100644 --- a/server/shadow/shadow_server.c +++ b/server/shadow/shadow_server.c @@ -313,7 +313,7 @@ void* shadow_server_thread(rdpShadowServer* server) while (1) { - nCount = 0; + nCount = 32; if (listener->GetEventHandles(listener, events, &nCount) < 0) {