From 56f433722005aa034f942bd30fbf5788e4bf0f6d Mon Sep 17 00:00:00 2001 From: Armin Novak Date: Mon, 2 Mar 2026 13:00:16 +0100 Subject: [PATCH] [server] Check WTSRegisterWtsApiFunctionTable return --- server/Mac/mfreerdp.c | 3 ++- server/Sample/sfreerdp.c | 4 +++- server/Windows/wf_interface.c | 9 +++++---- server/proxy/pf_server.c | 8 ++++++-- 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/server/Mac/mfreerdp.c b/server/Mac/mfreerdp.c index 1229d3ce8..377df6956 100644 --- a/server/Mac/mfreerdp.c +++ b/server/Mac/mfreerdp.c @@ -89,7 +89,8 @@ int main(int argc, char* argv[]) signal(SIGPIPE, SIG_IGN); - WTSRegisterWtsApiFunctionTable(FreeRDP_InitWtsApi()); + if (!WTSRegisterWtsApiFunctionTable(FreeRDP_InitWtsApi())) + return -1; if (!(instance = freerdp_listener_new())) return 1; diff --git a/server/Sample/sfreerdp.c b/server/Sample/sfreerdp.c index 4ea7d2a7f..e6dc017a8 100644 --- a/server/Sample/sfreerdp.c +++ b/server/Sample/sfreerdp.c @@ -1480,7 +1480,9 @@ int main(int argc, char* argv[]) return usage(app, arg); } - WTSRegisterWtsApiFunctionTable(FreeRDP_InitWtsApi()); + if (!WTSRegisterWtsApiFunctionTable(FreeRDP_InitWtsApi())) + return -1; + if (!winpr_InitializeSSL(WINPR_SSL_INIT_DEFAULT)) return -1; diff --git a/server/Windows/wf_interface.c b/server/Windows/wf_interface.c index 4426b9bea..9542e9cf2 100644 --- a/server/Windows/wf_interface.c +++ b/server/Windows/wf_interface.c @@ -171,21 +171,22 @@ BOOL wfreerdp_server_stop(wfServer* server) wfServer* wfreerdp_server_new() { - WSADATA wsaData; + WSADATA wsaData = WINPR_C_ARRAY_INIT; wfServer* server; if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) return nullptr; - server = (wfServer*)calloc(1, sizeof(wfServer)); + if (!WTSRegisterWtsApiFunctionTable(FreeRDP_InitWtsApi())) + return nullptr; + + wfServer* server = (wfServer*)calloc(1, sizeof(wfServer)); if (server) { server->port = 3389; } - WTSRegisterWtsApiFunctionTable(FreeRDP_InitWtsApi()); - cbEvent = nullptr; return server; diff --git a/server/proxy/pf_server.c b/server/proxy/pf_server.c index db0e2e5df..2df961929 100644 --- a/server/proxy/pf_server.c +++ b/server/proxy/pf_server.c @@ -812,7 +812,9 @@ BOOL pf_server_start(proxyServer* server) WINPR_ASSERT(server); - WTSRegisterWtsApiFunctionTable(FreeRDP_InitWtsApi()); + if (!WTSRegisterWtsApiFunctionTable(FreeRDP_InitWtsApi())) + goto error; + if (!winpr_InitializeSSL(WINPR_SSL_INIT_DEFAULT)) goto error; @@ -853,7 +855,9 @@ BOOL pf_server_start_from_socket(proxyServer* server, int socket) WINPR_ASSERT(server); - WTSRegisterWtsApiFunctionTable(FreeRDP_InitWtsApi()); + if (!WTSRegisterWtsApiFunctionTable(FreeRDP_InitWtsApi())) + goto error; + if (!winpr_InitializeSSL(WINPR_SSL_INIT_DEFAULT)) goto error;