fix vs2010 errors

This commit is contained in:
kubistika 2019-05-27 12:06:59 +03:00
parent 52e4baa949
commit 72952c679f
5 changed files with 45 additions and 32 deletions

View File

@ -29,7 +29,7 @@ static PF_FILTER_RESULT demo_filter_keyboard_event(connectionInfo* info, void* p
static PF_FILTER_RESULT demo_filter_mouse_event(connectionInfo* info, void* param) static PF_FILTER_RESULT demo_filter_mouse_event(connectionInfo* info, void* param)
{ {
proxyMouseEventInfo* event_data = (proxyMouseEventInfo*) param; proxyMouseEventInfo* event_data = (proxyMouseEventInfo*) param;
if (event_data->x % 100 == 0) if (event_data->x % 100 == 0)
{ {

View File

@ -35,6 +35,9 @@
wArrayList* parse_string_array_from_str(const char* str) wArrayList* parse_string_array_from_str(const char* str)
{ {
wArrayList* list = ArrayList_New(FALSE); wArrayList* list = ArrayList_New(FALSE);
char* s;
char* temp;
char* token;
if (list == NULL) if (list == NULL)
{ {
@ -42,9 +45,13 @@ wArrayList* parse_string_array_from_str(const char* str)
return NULL; return NULL;
} }
char* s = _strdup(str);
char* temp = s; temp = s = _strdup(str);
char* token; if (!s)
{
WLog_ERR(TAG, "parse_string_array_from_str(): strdup failed!");
return NULL;
}
if (s == NULL) if (s == NULL)
{ {
@ -115,6 +122,7 @@ DWORD pf_server_load_config(const char* path, proxyConfig* config)
char** filters_names; char** filters_names;
int rc; int rc;
int filters_count = 0; int filters_count = 0;
UINT32 index;
DWORD result = CONFIG_PARSE_ERROR; DWORD result = CONFIG_PARSE_ERROR;
wIniFile* ini = IniFile_New(); wIniFile* ini = IniFile_New();
@ -182,9 +190,9 @@ DWORD pf_server_load_config(const char* path, proxyConfig* config)
filters_names = IniFile_GetSectionKeyNames(ini, "Filters", &filters_count); filters_names = IniFile_GetSectionKeyNames(ini, "Filters", &filters_count);
for (int i = 0; i < filters_count; i++) for (index = 0; index < filters_count; index++)
{ {
char* filter_name = filters_names[i]; char* filter_name = filters_names[index];
const char* path = IniFile_GetKeyValueString(ini, "Filters", filter_name); const char* path = IniFile_GetKeyValueString(ini, "Filters", filter_name);
if (!pf_filters_register_new(config->Filters, path, filter_name)) if (!pf_filters_register_new(config->Filters, path, filter_name))

View File

@ -122,7 +122,9 @@ PF_FILTER_RESULT pf_filters_run_by_type(filters_list* list, PF_FILTER_TYPE type,
static void pf_filters_filter_free(proxyFilter* filter) static void pf_filters_filter_free(proxyFilter* filter)
{ {
assert(filter != NULL); assert(filter != NULL);
FreeLibrary(filter->handle); if (filter->handle)
FreeLibrary(filter->handle);
free(filter->name); free(filter->name);
free(filter->events); free(filter->events);
free(filter); free(filter);
@ -130,11 +132,13 @@ static void pf_filters_filter_free(proxyFilter* filter)
void pf_filters_unregister_all(filters_list* list) void pf_filters_unregister_all(filters_list* list)
{ {
size_t count;
size_t index;
if (list == NULL) if (list == NULL)
return; return;
const size_t count = (size_t) ArrayList_Count(list); count = (size_t) ArrayList_Count(list);
size_t index;
for (index = 0; index < count; index++) for (index = 0; index < count; index++)
{ {
@ -159,7 +163,7 @@ BOOL pf_filters_register_new(filters_list* list, const char* module_path, const
if (handle == NULL) if (handle == NULL)
{ {
WLog_ERR(TAG, "pf_filters_register_new(): failed loading external module: %s", module_path); WLog_ERR(TAG, "pf_filters_register_new(): failed loading external module: %s", module_path);
goto error; return FALSE;
} }
if (!(fn = (filterInitFn) GetProcAddress(handle, FILTER_INIT_METHOD))) if (!(fn = (filterInitFn) GetProcAddress(handle, FILTER_INIT_METHOD)))
@ -207,7 +211,6 @@ error:
if (handle) if (handle)
FreeLibrary(handle); FreeLibrary(handle);
free(events); pf_filters_filter_free(filter);
free(filter);
return FALSE; return FALSE;
} }

View File

@ -57,19 +57,18 @@ PF_FILTER_RESULT pf_filters_run_by_type(filters_list* list, PF_FILTER_TYPE type,
void* param); void* param);
void pf_filters_unregister_all(filters_list* list); void pf_filters_unregister_all(filters_list* list);
#define RUN_FILTER(_filters,_type,_conn_info,_event_info,_cb,...) ({ \ #define RUN_FILTER(_filters,_type,_conn_info,_event_info,_ret,_cb,...) do { \
({ BOOL result; switch(pf_filters_run_by_type(_filters,_type,_conn_info,_event_info)) { \ switch(pf_filters_run_by_type(_filters,_type,_conn_info,_event_info)) { \
case FILTER_PASS: \ case FILTER_PASS: \
result = _cb(__VA_ARGS__); \ _ret = _cb(__VA_ARGS__); \
break; \ break; \
case FILTER_IGNORE: \ case FILTER_IGNORE: \
result = TRUE; \ _ret = TRUE; \
break; \ break; \
case FILTER_DROP: \ case FILTER_DROP: \
default: \ default: \
result = FALSE; \ _ret = FALSE; \
}; result; \ } \
}); \ } while(0)
})
#endif /* FREERDP_SERVER_PROXY_FILTERS_H */ #endif /* FREERDP_SERVER_PROXY_FILTERS_H */

View File

@ -32,21 +32,22 @@ static BOOL pf_server_synchronize_event(rdpInput* input, UINT32 flags)
static BOOL pf_server_keyboard_event(rdpInput* input, UINT16 flags, UINT16 code) static BOOL pf_server_keyboard_event(rdpInput* input, UINT16 flags, UINT16 code)
{ {
BOOL result = FALSE;
pServerContext* ps = (pServerContext*)input->context; pServerContext* ps = (pServerContext*)input->context;
pClientContext* pc = ps->pdata->pc; pClientContext* pc = ps->pdata->pc;
rdpContext* context = (rdpContext*) pc; rdpContext* context = (rdpContext*) pc;
proxyConfig* config = ps->pdata->config; proxyConfig* config = ps->pdata->config;
proxyKeyboardEventInfo event;
if (!config->Keyboard) if (!config->Keyboard)
return TRUE; return TRUE;
proxyKeyboardEventInfo info = event.flags = flags;
{ event.rdp_scan_code = code;
.flags = flags,
.rdp_scan_code = code RUN_FILTER(config->Filters, FILTER_TYPE_KEYBOARD, ps->pdata->info, &event, result,
};
return RUN_FILTER(config->Filters, FILTER_TYPE_KEYBOARD, ps->pdata->info, &info,
freerdp_input_send_keyboard_event, context->input, flags, code); freerdp_input_send_keyboard_event, context->input, flags, code);
return result;
} }
static BOOL pf_server_unicode_keyboard_event(rdpInput* input, UINT16 flags, UINT16 code) static BOOL pf_server_unicode_keyboard_event(rdpInput* input, UINT16 flags, UINT16 code)
@ -64,21 +65,23 @@ static BOOL pf_server_unicode_keyboard_event(rdpInput* input, UINT16 flags, UINT
static BOOL pf_server_mouse_event(rdpInput* input, UINT16 flags, UINT16 x, UINT16 y) static BOOL pf_server_mouse_event(rdpInput* input, UINT16 flags, UINT16 x, UINT16 y)
{ {
BOOL result = FALSE;
pServerContext* ps = (pServerContext*)input->context; pServerContext* ps = (pServerContext*)input->context;
pClientContext* pc = ps->pdata->pc; pClientContext* pc = ps->pdata->pc;
rdpContext* context = (rdpContext*) pc; rdpContext* context = (rdpContext*) pc;
proxyConfig* config = ps->pdata->config; proxyConfig* config = ps->pdata->config;
proxyMouseEventInfo event;
if (!config->Mouse) if (!config->Mouse)
return TRUE; return TRUE;
proxyMouseEventInfo info = event.flags = flags;
{ event.x = x;
.flags = flags, event.y = y;
.x = x, .y = y
}; RUN_FILTER(config->Filters, FILTER_TYPE_MOUSE, ps->pdata->info, &event, result,
return RUN_FILTER(config->Filters, FILTER_TYPE_MOUSE, ps->pdata->info, &info,
freerdp_input_send_mouse_event, context->input, flags, x, y); freerdp_input_send_mouse_event, context->input, flags, x, y);
return result;
} }
static BOOL pf_server_extended_mouse_event(rdpInput* input, UINT16 flags, UINT16 x, static BOOL pf_server_extended_mouse_event(rdpInput* input, UINT16 flags, UINT16 x,