Merge pull request #12330 from akallabeth/shadow-fix

[server,shadow] fix return and parameter checks
This commit is contained in:
akallabeth
2026-02-19 08:58:39 +01:00
committed by GitHub
4 changed files with 98 additions and 47 deletions

View File

@@ -44,7 +44,7 @@ static constexpr char plugin_name[] = "bitmap-filter";
static constexpr char plugin_desc[] = static constexpr char plugin_desc[] =
"this plugin deactivates and filters persistent bitmap cache."; "this plugin deactivates and filters persistent bitmap cache.";
static const std::vector<std::string>& plugin_static_intercept() [[nodiscard]] static const std::vector<std::string>& plugin_static_intercept()
{ {
static std::vector<std::string> vec; static std::vector<std::string> vec;
if (vec.empty()) if (vec.empty())
@@ -52,7 +52,7 @@ static const std::vector<std::string>& plugin_static_intercept()
return vec; return vec;
} }
static const std::vector<std::string>& plugin_dyn_intercept() [[nodiscard]] static const std::vector<std::string>& plugin_dyn_intercept()
{ {
static std::vector<std::string> vec; static std::vector<std::string> vec;
if (vec.empty()) if (vec.empty())
@@ -120,9 +120,9 @@ class DynChannelState
uint32_t _channelId = 0; uint32_t _channelId = 0;
}; };
static BOOL filter_client_pre_connect([[maybe_unused]] proxyPlugin* plugin, [[nodiscard]] static BOOL filter_client_pre_connect([[maybe_unused]] proxyPlugin* plugin,
[[maybe_unused]] proxyData* pdata, [[maybe_unused]] proxyData* pdata,
[[maybe_unused]] void* custom) [[maybe_unused]] void* custom)
{ {
WINPR_ASSERT(plugin); WINPR_ASSERT(plugin);
WINPR_ASSERT(pdata); WINPR_ASSERT(pdata);
@@ -135,9 +135,9 @@ static BOOL filter_client_pre_connect([[maybe_unused]] proxyPlugin* plugin,
return freerdp_settings_set_bool(settings, FreeRDP_BitmapCachePersistEnabled, FALSE); return freerdp_settings_set_bool(settings, FreeRDP_BitmapCachePersistEnabled, FALSE);
} }
static BOOL filter_dyn_channel_intercept_list([[maybe_unused]] proxyPlugin* plugin, [[nodiscard]] static BOOL filter_dyn_channel_intercept_list([[maybe_unused]] proxyPlugin* plugin,
[[maybe_unused]] proxyData* pdata, [[maybe_unused]] proxyData* pdata,
[[maybe_unused]] void* arg) [[maybe_unused]] void* arg)
{ {
auto data = static_cast<proxyChannelToInterceptData*>(arg); auto data = static_cast<proxyChannelToInterceptData*>(arg);
@@ -152,9 +152,9 @@ static BOOL filter_dyn_channel_intercept_list([[maybe_unused]] proxyPlugin* plug
return TRUE; return TRUE;
} }
static BOOL filter_static_channel_intercept_list([[maybe_unused]] proxyPlugin* plugin, [[nodiscard]] static BOOL filter_static_channel_intercept_list([[maybe_unused]] proxyPlugin* plugin,
[[maybe_unused]] proxyData* pdata, [[maybe_unused]] proxyData* pdata,
[[maybe_unused]] void* arg) [[maybe_unused]] void* arg)
{ {
auto data = static_cast<proxyChannelToInterceptData*>(arg); auto data = static_cast<proxyChannelToInterceptData*>(arg);
@@ -169,7 +169,7 @@ static BOOL filter_static_channel_intercept_list([[maybe_unused]] proxyPlugin* p
return TRUE; return TRUE;
} }
static size_t drdynvc_cblen_to_bytes(UINT8 cbLen) [[nodiscard]] static size_t drdynvc_cblen_to_bytes(UINT8 cbLen)
{ {
switch (cbLen) switch (cbLen)
{ {
@@ -184,7 +184,7 @@ static size_t drdynvc_cblen_to_bytes(UINT8 cbLen)
} }
} }
static UINT32 drdynvc_read_variable_uint(wStream* s, UINT8 cbLen) [[nodiscard]] static UINT32 drdynvc_read_variable_uint(wStream* s, UINT8 cbLen)
{ {
UINT32 val = 0; UINT32 val = 0;
@@ -206,7 +206,7 @@ static UINT32 drdynvc_read_variable_uint(wStream* s, UINT8 cbLen)
return val; return val;
} }
static BOOL drdynvc_try_read_header(wStream* s, uint32_t& channelId, size_t& length) [[nodiscard]] static BOOL drdynvc_try_read_header(wStream* s, uint32_t& channelId, size_t& length)
{ {
UINT8 value = 0; UINT8 value = 0;
Stream_SetPosition(s, 0); Stream_SetPosition(s, 0);
@@ -245,7 +245,7 @@ static BOOL drdynvc_try_read_header(wStream* s, uint32_t& channelId, size_t& len
return TRUE; return TRUE;
} }
static DynChannelState* filter_get_plugin_data(proxyPlugin* plugin, proxyData* pdata) [[nodiscard]] static DynChannelState* filter_get_plugin_data(proxyPlugin* plugin, proxyData* pdata)
{ {
WINPR_ASSERT(plugin); WINPR_ASSERT(plugin);
WINPR_ASSERT(pdata); WINPR_ASSERT(pdata);
@@ -257,7 +257,8 @@ static DynChannelState* filter_get_plugin_data(proxyPlugin* plugin, proxyData* p
return static_cast<DynChannelState*>(mgr->GetPluginData(mgr, plugin_name, pdata)); return static_cast<DynChannelState*>(mgr->GetPluginData(mgr, plugin_name, pdata));
} }
static BOOL filter_set_plugin_data(proxyPlugin* plugin, proxyData* pdata, DynChannelState* data) [[nodiscard]] static BOOL filter_set_plugin_data(proxyPlugin* plugin, proxyData* pdata,
DynChannelState* data)
{ {
WINPR_ASSERT(plugin); WINPR_ASSERT(plugin);
WINPR_ASSERT(pdata); WINPR_ASSERT(pdata);
@@ -270,7 +271,7 @@ static BOOL filter_set_plugin_data(proxyPlugin* plugin, proxyData* pdata, DynCha
} }
#if defined(REPLY_WITH_EMPTY_OFFER) #if defined(REPLY_WITH_EMPTY_OFFER)
static UINT8 drdynvc_value_to_cblen(UINT32 value) [[nodiscard]] static UINT8 drdynvc_value_to_cblen(UINT32 value)
{ {
if (value <= 0xFF) if (value <= 0xFF)
return 0; return 0;
@@ -279,7 +280,7 @@ static UINT8 drdynvc_value_to_cblen(UINT32 value)
return 2; return 2;
} }
static BOOL drdynvc_write_variable_uint(wStream* s, UINT32 value, UINT8 cbLen) [[nodiscard]] static BOOL drdynvc_write_variable_uint(wStream* s, UINT32 value, UINT8 cbLen)
{ {
switch (cbLen) switch (cbLen)
{ {
@@ -299,7 +300,7 @@ static BOOL drdynvc_write_variable_uint(wStream* s, UINT32 value, UINT8 cbLen)
return TRUE; return TRUE;
} }
static BOOL drdynvc_write_header(wStream* s, UINT32 channelId) [[nodiscard]] static BOOL drdynvc_write_header(wStream* s, UINT32 channelId)
{ {
const UINT8 cbChId = drdynvc_value_to_cblen(channelId); const UINT8 cbChId = drdynvc_value_to_cblen(channelId);
const UINT8 value = (DATA_PDU << 4) | cbChId; const UINT8 value = (DATA_PDU << 4) | cbChId;
@@ -312,8 +313,9 @@ static BOOL drdynvc_write_header(wStream* s, UINT32 channelId)
return drdynvc_write_variable_uint(s, value, cbChId); return drdynvc_write_variable_uint(s, value, cbChId);
} }
static BOOL filter_forward_empty_offer(const char* sessionID, proxyDynChannelInterceptData* data, [[nodiscard]] static BOOL filter_forward_empty_offer(const char* sessionID,
size_t startPosition, UINT32 channelId) proxyDynChannelInterceptData* data,
size_t startPosition, UINT32 channelId)
{ {
WINPR_ASSERT(data); WINPR_ASSERT(data);
@@ -333,7 +335,8 @@ static BOOL filter_forward_empty_offer(const char* sessionID, proxyDynChannelInt
} }
#endif #endif
static BOOL filter_dyn_channel_intercept(proxyPlugin* plugin, proxyData* pdata, void* arg) [[nodiscard]] static BOOL filter_dyn_channel_intercept(proxyPlugin* plugin, proxyData* pdata,
void* arg)
{ {
auto data = static_cast<proxyDynChannelInterceptData*>(arg); auto data = static_cast<proxyDynChannelInterceptData*>(arg);
@@ -420,7 +423,8 @@ static BOOL filter_dyn_channel_intercept(proxyPlugin* plugin, proxyData* pdata,
return TRUE; return TRUE;
} }
static BOOL filter_server_session_started(proxyPlugin* plugin, proxyData* pdata, void* /*unused*/) [[nodiscard]] static BOOL filter_server_session_started(proxyPlugin* plugin, proxyData* pdata,
void* /*unused*/)
{ {
WINPR_ASSERT(plugin); WINPR_ASSERT(plugin);
WINPR_ASSERT(pdata); WINPR_ASSERT(pdata);
@@ -438,18 +442,19 @@ static BOOL filter_server_session_started(proxyPlugin* plugin, proxyData* pdata,
return TRUE; return TRUE;
} }
static BOOL filter_server_session_end(proxyPlugin* plugin, proxyData* pdata, void* /*unused*/) [[nodiscard]] static BOOL filter_server_session_end(proxyPlugin* plugin, proxyData* pdata,
void* /*unused*/)
{ {
WINPR_ASSERT(plugin); WINPR_ASSERT(plugin);
WINPR_ASSERT(pdata); WINPR_ASSERT(pdata);
auto state = filter_get_plugin_data(plugin, pdata); auto state = filter_get_plugin_data(plugin, pdata);
delete state; delete state;
filter_set_plugin_data(plugin, pdata, nullptr); return filter_set_plugin_data(plugin, pdata, nullptr);
return TRUE;
} }
static BOOL int_proxy_module_entry_point(proxyPluginsManager* plugins_manager, void* userdata) [[nodiscard]] static BOOL int_proxy_module_entry_point(proxyPluginsManager* plugins_manager,
void* userdata)
{ {
proxyPlugin plugin = {}; proxyPlugin plugin = {};
@@ -478,6 +483,7 @@ extern "C"
{ {
#endif #endif
#if defined(BUILD_SHARED_LIBS) #if defined(BUILD_SHARED_LIBS)
[[nodiscard]]
FREERDP_API BOOL proxy_module_entry_point(proxyPluginsManager* plugins_manager, void* userdata); FREERDP_API BOOL proxy_module_entry_point(proxyPluginsManager* plugins_manager, void* userdata);
BOOL proxy_module_entry_point(proxyPluginsManager* plugins_manager, void* userdata) BOOL proxy_module_entry_point(proxyPluginsManager* plugins_manager, void* userdata)
@@ -485,6 +491,7 @@ extern "C"
return int_proxy_module_entry_point(plugins_manager, userdata); return int_proxy_module_entry_point(plugins_manager, userdata);
} }
#else #else
[[nodiscard]]
FREERDP_API BOOL bitmap_filter_proxy_module_entry_point(proxyPluginsManager* plugins_manager, FREERDP_API BOOL bitmap_filter_proxy_module_entry_point(proxyPluginsManager* plugins_manager,
void* userdata); void* userdata);
BOOL bitmap_filter_proxy_module_entry_point(proxyPluginsManager* plugins_manager, void* userdata) BOOL bitmap_filter_proxy_module_entry_point(proxyPluginsManager* plugins_manager, void* userdata)

View File

@@ -36,6 +36,7 @@ struct demo_custom_data
static constexpr char plugin_name[] = "demo"; static constexpr char plugin_name[] = "demo";
static constexpr char plugin_desc[] = "this is a test plugin"; static constexpr char plugin_desc[] = "this is a test plugin";
[[nodiscard]]
static BOOL demo_plugin_unload([[maybe_unused]] proxyPlugin* plugin) static BOOL demo_plugin_unload([[maybe_unused]] proxyPlugin* plugin)
{ {
WINPR_ASSERT(plugin); WINPR_ASSERT(plugin);
@@ -49,6 +50,7 @@ static BOOL demo_plugin_unload([[maybe_unused]] proxyPlugin* plugin)
return TRUE; return TRUE;
} }
[[nodiscard]]
static BOOL demo_client_init_connect([[maybe_unused]] proxyPlugin* plugin, static BOOL demo_client_init_connect([[maybe_unused]] proxyPlugin* plugin,
[[maybe_unused]] proxyData* pdata, [[maybe_unused]] proxyData* pdata,
[[maybe_unused]] void* custom) [[maybe_unused]] void* custom)
@@ -61,6 +63,7 @@ static BOOL demo_client_init_connect([[maybe_unused]] proxyPlugin* plugin,
return TRUE; return TRUE;
} }
[[nodiscard]]
static BOOL demo_client_uninit_connect([[maybe_unused]] proxyPlugin* plugin, static BOOL demo_client_uninit_connect([[maybe_unused]] proxyPlugin* plugin,
[[maybe_unused]] proxyData* pdata, [[maybe_unused]] proxyData* pdata,
[[maybe_unused]] void* custom) [[maybe_unused]] void* custom)
@@ -73,6 +76,7 @@ static BOOL demo_client_uninit_connect([[maybe_unused]] proxyPlugin* plugin,
return TRUE; return TRUE;
} }
[[nodiscard]]
static BOOL demo_client_pre_connect([[maybe_unused]] proxyPlugin* plugin, static BOOL demo_client_pre_connect([[maybe_unused]] proxyPlugin* plugin,
[[maybe_unused]] proxyData* pdata, [[maybe_unused]] proxyData* pdata,
[[maybe_unused]] void* custom) [[maybe_unused]] void* custom)
@@ -85,6 +89,7 @@ static BOOL demo_client_pre_connect([[maybe_unused]] proxyPlugin* plugin,
return TRUE; return TRUE;
} }
[[nodiscard]]
static BOOL demo_client_post_connect([[maybe_unused]] proxyPlugin* plugin, static BOOL demo_client_post_connect([[maybe_unused]] proxyPlugin* plugin,
[[maybe_unused]] proxyData* pdata, [[maybe_unused]] proxyData* pdata,
[[maybe_unused]] void* custom) [[maybe_unused]] void* custom)
@@ -97,6 +102,7 @@ static BOOL demo_client_post_connect([[maybe_unused]] proxyPlugin* plugin,
return TRUE; return TRUE;
} }
[[nodiscard]]
static BOOL demo_client_post_disconnect([[maybe_unused]] proxyPlugin* plugin, static BOOL demo_client_post_disconnect([[maybe_unused]] proxyPlugin* plugin,
[[maybe_unused]] proxyData* pdata, [[maybe_unused]] proxyData* pdata,
[[maybe_unused]] void* custom) [[maybe_unused]] void* custom)
@@ -109,6 +115,7 @@ static BOOL demo_client_post_disconnect([[maybe_unused]] proxyPlugin* plugin,
return TRUE; return TRUE;
} }
[[nodiscard]]
static BOOL demo_client_x509_certificate([[maybe_unused]] proxyPlugin* plugin, static BOOL demo_client_x509_certificate([[maybe_unused]] proxyPlugin* plugin,
[[maybe_unused]] proxyData* pdata, [[maybe_unused]] proxyData* pdata,
[[maybe_unused]] void* custom) [[maybe_unused]] void* custom)
@@ -121,6 +128,7 @@ static BOOL demo_client_x509_certificate([[maybe_unused]] proxyPlugin* plugin,
return TRUE; return TRUE;
} }
[[nodiscard]]
static BOOL demo_client_login_failure([[maybe_unused]] proxyPlugin* plugin, static BOOL demo_client_login_failure([[maybe_unused]] proxyPlugin* plugin,
[[maybe_unused]] proxyData* pdata, [[maybe_unused]] proxyData* pdata,
[[maybe_unused]] void* custom) [[maybe_unused]] void* custom)
@@ -133,6 +141,7 @@ static BOOL demo_client_login_failure([[maybe_unused]] proxyPlugin* plugin,
return TRUE; return TRUE;
} }
[[nodiscard]]
static BOOL demo_client_end_paint([[maybe_unused]] proxyPlugin* plugin, static BOOL demo_client_end_paint([[maybe_unused]] proxyPlugin* plugin,
[[maybe_unused]] proxyData* pdata, [[maybe_unused]] void* custom) [[maybe_unused]] proxyData* pdata, [[maybe_unused]] void* custom)
{ {
@@ -144,6 +153,7 @@ static BOOL demo_client_end_paint([[maybe_unused]] proxyPlugin* plugin,
return TRUE; return TRUE;
} }
[[nodiscard]]
static BOOL demo_client_redirect([[maybe_unused]] proxyPlugin* plugin, static BOOL demo_client_redirect([[maybe_unused]] proxyPlugin* plugin,
[[maybe_unused]] proxyData* pdata, [[maybe_unused]] void* custom) [[maybe_unused]] proxyData* pdata, [[maybe_unused]] void* custom)
{ {
@@ -155,6 +165,7 @@ static BOOL demo_client_redirect([[maybe_unused]] proxyPlugin* plugin,
return TRUE; return TRUE;
} }
[[nodiscard]]
static BOOL demo_server_post_connect([[maybe_unused]] proxyPlugin* plugin, static BOOL demo_server_post_connect([[maybe_unused]] proxyPlugin* plugin,
[[maybe_unused]] proxyData* pdata, [[maybe_unused]] proxyData* pdata,
[[maybe_unused]] void* custom) [[maybe_unused]] void* custom)
@@ -167,6 +178,7 @@ static BOOL demo_server_post_connect([[maybe_unused]] proxyPlugin* plugin,
return TRUE; return TRUE;
} }
[[nodiscard]]
static BOOL demo_server_peer_activate([[maybe_unused]] proxyPlugin* plugin, static BOOL demo_server_peer_activate([[maybe_unused]] proxyPlugin* plugin,
[[maybe_unused]] proxyData* pdata, [[maybe_unused]] proxyData* pdata,
[[maybe_unused]] void* custom) [[maybe_unused]] void* custom)
@@ -179,6 +191,7 @@ static BOOL demo_server_peer_activate([[maybe_unused]] proxyPlugin* plugin,
return TRUE; return TRUE;
} }
[[nodiscard]]
static BOOL demo_server_channels_init([[maybe_unused]] proxyPlugin* plugin, static BOOL demo_server_channels_init([[maybe_unused]] proxyPlugin* plugin,
[[maybe_unused]] proxyData* pdata, [[maybe_unused]] proxyData* pdata,
[[maybe_unused]] void* custom) [[maybe_unused]] void* custom)
@@ -191,6 +204,7 @@ static BOOL demo_server_channels_init([[maybe_unused]] proxyPlugin* plugin,
return TRUE; return TRUE;
} }
[[nodiscard]]
static BOOL demo_server_channels_free([[maybe_unused]] proxyPlugin* plugin, static BOOL demo_server_channels_free([[maybe_unused]] proxyPlugin* plugin,
[[maybe_unused]] proxyData* pdata, [[maybe_unused]] proxyData* pdata,
[[maybe_unused]] void* custom) [[maybe_unused]] void* custom)
@@ -203,6 +217,7 @@ static BOOL demo_server_channels_free([[maybe_unused]] proxyPlugin* plugin,
return TRUE; return TRUE;
} }
[[nodiscard]]
static BOOL demo_server_session_end([[maybe_unused]] proxyPlugin* plugin, static BOOL demo_server_session_end([[maybe_unused]] proxyPlugin* plugin,
[[maybe_unused]] proxyData* pdata, [[maybe_unused]] proxyData* pdata,
[[maybe_unused]] void* custom) [[maybe_unused]] void* custom)
@@ -215,6 +230,7 @@ static BOOL demo_server_session_end([[maybe_unused]] proxyPlugin* plugin,
return TRUE; return TRUE;
} }
[[nodiscard]]
static BOOL demo_filter_keyboard_event([[maybe_unused]] proxyPlugin* plugin, static BOOL demo_filter_keyboard_event([[maybe_unused]] proxyPlugin* plugin,
[[maybe_unused]] proxyData* pdata, [[maybe_unused]] proxyData* pdata,
[[maybe_unused]] void* param) [[maybe_unused]] void* param)
@@ -242,6 +258,7 @@ static BOOL demo_filter_keyboard_event([[maybe_unused]] proxyPlugin* plugin,
return TRUE; return TRUE;
} }
[[nodiscard]]
static BOOL demo_filter_unicode_event([[maybe_unused]] proxyPlugin* plugin, static BOOL demo_filter_unicode_event([[maybe_unused]] proxyPlugin* plugin,
[[maybe_unused]] proxyData* pdata, [[maybe_unused]] proxyData* pdata,
[[maybe_unused]] void* param) [[maybe_unused]] void* param)
@@ -269,6 +286,7 @@ static BOOL demo_filter_unicode_event([[maybe_unused]] proxyPlugin* plugin,
return TRUE; return TRUE;
} }
[[nodiscard]]
static BOOL demo_mouse_event([[maybe_unused]] proxyPlugin* plugin, static BOOL demo_mouse_event([[maybe_unused]] proxyPlugin* plugin,
[[maybe_unused]] proxyData* pdata, [[maybe_unused]] void* param) [[maybe_unused]] proxyData* pdata, [[maybe_unused]] void* param)
{ {
@@ -282,6 +300,7 @@ static BOOL demo_mouse_event([[maybe_unused]] proxyPlugin* plugin,
return TRUE; return TRUE;
} }
[[nodiscard]]
static BOOL demo_mouse_ex_event([[maybe_unused]] proxyPlugin* plugin, static BOOL demo_mouse_ex_event([[maybe_unused]] proxyPlugin* plugin,
[[maybe_unused]] proxyData* pdata, [[maybe_unused]] void* param) [[maybe_unused]] proxyData* pdata, [[maybe_unused]] void* param)
{ {
@@ -295,6 +314,7 @@ static BOOL demo_mouse_ex_event([[maybe_unused]] proxyPlugin* plugin,
return TRUE; return TRUE;
} }
[[nodiscard]]
static BOOL demo_client_channel_data([[maybe_unused]] proxyPlugin* plugin, static BOOL demo_client_channel_data([[maybe_unused]] proxyPlugin* plugin,
[[maybe_unused]] proxyData* pdata, [[maybe_unused]] proxyData* pdata,
[[maybe_unused]] void* param) [[maybe_unused]] void* param)
@@ -310,6 +330,7 @@ static BOOL demo_client_channel_data([[maybe_unused]] proxyPlugin* plugin,
return TRUE; return TRUE;
} }
[[nodiscard]]
static BOOL demo_server_channel_data([[maybe_unused]] proxyPlugin* plugin, static BOOL demo_server_channel_data([[maybe_unused]] proxyPlugin* plugin,
[[maybe_unused]] proxyData* pdata, [[maybe_unused]] proxyData* pdata,
[[maybe_unused]] void* param) [[maybe_unused]] void* param)
@@ -325,6 +346,7 @@ static BOOL demo_server_channel_data([[maybe_unused]] proxyPlugin* plugin,
return TRUE; return TRUE;
} }
[[nodiscard]]
static BOOL demo_dynamic_channel_create([[maybe_unused]] proxyPlugin* plugin, static BOOL demo_dynamic_channel_create([[maybe_unused]] proxyPlugin* plugin,
[[maybe_unused]] proxyData* pdata, [[maybe_unused]] proxyData* pdata,
[[maybe_unused]] void* param) [[maybe_unused]] void* param)
@@ -339,6 +361,7 @@ static BOOL demo_dynamic_channel_create([[maybe_unused]] proxyPlugin* plugin,
return TRUE; return TRUE;
} }
[[nodiscard]]
static BOOL demo_server_fetch_target_addr([[maybe_unused]] proxyPlugin* plugin, static BOOL demo_server_fetch_target_addr([[maybe_unused]] proxyPlugin* plugin,
[[maybe_unused]] proxyData* pdata, [[maybe_unused]] proxyData* pdata,
[[maybe_unused]] void* param) [[maybe_unused]] void* param)
@@ -353,6 +376,7 @@ static BOOL demo_server_fetch_target_addr([[maybe_unused]] proxyPlugin* plugin,
return TRUE; return TRUE;
} }
[[nodiscard]]
static BOOL demo_server_peer_logon([[maybe_unused]] proxyPlugin* plugin, static BOOL demo_server_peer_logon([[maybe_unused]] proxyPlugin* plugin,
[[maybe_unused]] proxyData* pdata, [[maybe_unused]] void* param) [[maybe_unused]] proxyData* pdata, [[maybe_unused]] void* param)
{ {
@@ -366,6 +390,7 @@ static BOOL demo_server_peer_logon([[maybe_unused]] proxyPlugin* plugin,
return TRUE; return TRUE;
} }
[[nodiscard]]
static BOOL demo_dyn_channel_intercept_list([[maybe_unused]] proxyPlugin* plugin, static BOOL demo_dyn_channel_intercept_list([[maybe_unused]] proxyPlugin* plugin,
[[maybe_unused]] proxyData* pdata, [[maybe_unused]] proxyData* pdata,
[[maybe_unused]] void* arg) [[maybe_unused]] void* arg)
@@ -380,6 +405,7 @@ static BOOL demo_dyn_channel_intercept_list([[maybe_unused]] proxyPlugin* plugin
return TRUE; return TRUE;
} }
[[nodiscard]]
static BOOL demo_static_channel_intercept_list([[maybe_unused]] proxyPlugin* plugin, static BOOL demo_static_channel_intercept_list([[maybe_unused]] proxyPlugin* plugin,
[[maybe_unused]] proxyData* pdata, [[maybe_unused]] proxyData* pdata,
[[maybe_unused]] void* arg) [[maybe_unused]] void* arg)
@@ -394,6 +420,7 @@ static BOOL demo_static_channel_intercept_list([[maybe_unused]] proxyPlugin* plu
return TRUE; return TRUE;
} }
[[nodiscard]]
static BOOL demo_dyn_channel_intercept([[maybe_unused]] proxyPlugin* plugin, static BOOL demo_dyn_channel_intercept([[maybe_unused]] proxyPlugin* plugin,
[[maybe_unused]] proxyData* pdata, [[maybe_unused]] proxyData* pdata,
[[maybe_unused]] void* arg) [[maybe_unused]] void* arg)
@@ -408,6 +435,7 @@ static BOOL demo_dyn_channel_intercept([[maybe_unused]] proxyPlugin* plugin,
return TRUE; return TRUE;
} }
[[nodiscard]]
static BOOL int_proxy_module_entry_point(proxyPluginsManager* plugins_manager, void* userdata) static BOOL int_proxy_module_entry_point(proxyPluginsManager* plugins_manager, void* userdata)
{ {
struct demo_custom_data* custom = nullptr; struct demo_custom_data* custom = nullptr;
@@ -464,6 +492,7 @@ extern "C"
{ {
#endif #endif
#if defined(BUILD_SHARED_LIBS) #if defined(BUILD_SHARED_LIBS)
[[nodiscard]]
FREERDP_API BOOL proxy_module_entry_point(proxyPluginsManager* plugins_manager, void* userdata); FREERDP_API BOOL proxy_module_entry_point(proxyPluginsManager* plugins_manager, void* userdata);
BOOL proxy_module_entry_point(proxyPluginsManager* plugins_manager, void* userdata) BOOL proxy_module_entry_point(proxyPluginsManager* plugins_manager, void* userdata)
@@ -471,6 +500,7 @@ extern "C"
return int_proxy_module_entry_point(plugins_manager, userdata); return int_proxy_module_entry_point(plugins_manager, userdata);
} }
#else #else
[[nodiscard]]
FREERDP_API BOOL demo_proxy_module_entry_point(proxyPluginsManager* plugins_manager, FREERDP_API BOOL demo_proxy_module_entry_point(proxyPluginsManager* plugins_manager,
void* userdata); void* userdata);
BOOL demo_proxy_module_entry_point(proxyPluginsManager* plugins_manager, void* userdata) BOOL demo_proxy_module_entry_point(proxyPluginsManager* plugins_manager, void* userdata)

View File

@@ -57,7 +57,7 @@ static constexpr char plugin_name[] = "dyn-channel-dump";
static constexpr char plugin_desc[] = static constexpr char plugin_desc[] =
"This plugin dumps configurable dynamic channel data to a file."; "This plugin dumps configurable dynamic channel data to a file.";
static const std::vector<std::string>& plugin_static_intercept() [[nodiscard]] static const std::vector<std::string>& plugin_static_intercept()
{ {
static std::vector<std::string> vec; static std::vector<std::string> vec;
if (vec.empty()) if (vec.empty())
@@ -204,7 +204,7 @@ class ChannelData
uint64_t _session_id; uint64_t _session_id;
}; };
static PluginData* dump_get_plugin_data(proxyPlugin* plugin) [[nodiscard]] static PluginData* dump_get_plugin_data(proxyPlugin* plugin)
{ {
WINPR_ASSERT(plugin); WINPR_ASSERT(plugin);
@@ -213,7 +213,7 @@ static PluginData* dump_get_plugin_data(proxyPlugin* plugin)
return plugindata; return plugindata;
} }
static ChannelData* dump_get_plugin_data(proxyPlugin* plugin, proxyData* pdata) [[nodiscard]] static ChannelData* dump_get_plugin_data(proxyPlugin* plugin, proxyData* pdata)
{ {
WINPR_ASSERT(plugin); WINPR_ASSERT(plugin);
WINPR_ASSERT(pdata); WINPR_ASSERT(pdata);
@@ -228,7 +228,8 @@ static ChannelData* dump_get_plugin_data(proxyPlugin* plugin, proxyData* pdata)
return static_cast<ChannelData*>(mgr->GetPluginData(mgr, plugin_name, pdata)); return static_cast<ChannelData*>(mgr->GetPluginData(mgr, plugin_name, pdata));
} }
static BOOL dump_set_plugin_data(proxyPlugin* plugin, proxyData* pdata, ChannelData* data) [[nodiscard]] static BOOL dump_set_plugin_data(proxyPlugin* plugin, proxyData* pdata,
ChannelData* data)
{ {
WINPR_ASSERT(plugin); WINPR_ASSERT(plugin);
WINPR_ASSERT(pdata); WINPR_ASSERT(pdata);
@@ -246,7 +247,8 @@ static BOOL dump_set_plugin_data(proxyPlugin* plugin, proxyData* pdata, ChannelD
return mgr->SetPluginData(mgr, plugin_name, pdata, data); return mgr->SetPluginData(mgr, plugin_name, pdata, data);
} }
static bool dump_channel_enabled(proxyPlugin* plugin, proxyData* pdata, const std::string& name) [[nodiscard]] static bool dump_channel_enabled(proxyPlugin* plugin, proxyData* pdata,
const std::string& name)
{ {
auto config = dump_get_plugin_data(plugin, pdata); auto config = dump_get_plugin_data(plugin, pdata);
if (!config) if (!config)
@@ -257,7 +259,8 @@ static bool dump_channel_enabled(proxyPlugin* plugin, proxyData* pdata, const st
return config->dump_enabled(name); return config->dump_enabled(name);
} }
static BOOL dump_dyn_channel_intercept_list(proxyPlugin* plugin, proxyData* pdata, void* arg) [[nodiscard]] static BOOL dump_dyn_channel_intercept_list(proxyPlugin* plugin, proxyData* pdata,
void* arg)
{ {
auto data = static_cast<proxyChannelToInterceptData*>(arg); auto data = static_cast<proxyChannelToInterceptData*>(arg);
@@ -285,8 +288,9 @@ static BOOL dump_dyn_channel_intercept_list(proxyPlugin* plugin, proxyData* pdat
return TRUE; return TRUE;
} }
static BOOL dump_static_channel_intercept_list([[maybe_unused]] proxyPlugin* plugin, [[nodiscard]] static BOOL dump_static_channel_intercept_list([[maybe_unused]] proxyPlugin* plugin,
[[maybe_unused]] proxyData* pdata, void* arg) [[maybe_unused]] proxyData* pdata,
void* arg)
{ {
auto data = static_cast<proxyChannelToInterceptData*>(arg); auto data = static_cast<proxyChannelToInterceptData*>(arg);
@@ -305,7 +309,8 @@ static BOOL dump_static_channel_intercept_list([[maybe_unused]] proxyPlugin* plu
return TRUE; return TRUE;
} }
static BOOL dump_dyn_channel_intercept(proxyPlugin* plugin, proxyData* pdata, void* arg) [[nodiscard]] static BOOL dump_dyn_channel_intercept(proxyPlugin* plugin, proxyData* pdata,
void* arg)
{ {
auto data = static_cast<proxyDynChannelInterceptData*>(arg); auto data = static_cast<proxyDynChannelInterceptData*>(arg);
@@ -352,7 +357,8 @@ static BOOL dump_dyn_channel_intercept(proxyPlugin* plugin, proxyData* pdata, vo
return TRUE; return TRUE;
} }
static std::vector<std::string> split(const std::string& input, const std::string& regex) [[nodiscard]] static std::vector<std::string> split(const std::string& input,
const std::string& regex)
{ {
// passing -1 as the submatch index parameter performs splitting // passing -1 as the submatch index parameter performs splitting
std::regex re(regex); std::regex re(regex);
@@ -361,7 +367,8 @@ static std::vector<std::string> split(const std::string& input, const std::strin
return { first, last }; return { first, last };
} }
static BOOL dump_session_started(proxyPlugin* plugin, proxyData* pdata, void* /*unused*/) [[nodiscard]] static BOOL dump_session_started(proxyPlugin* plugin, proxyData* pdata,
void* /*unused*/)
{ {
WINPR_ASSERT(plugin); WINPR_ASSERT(plugin);
WINPR_ASSERT(pdata); WINPR_ASSERT(pdata);
@@ -397,13 +404,14 @@ static BOOL dump_session_started(proxyPlugin* plugin, proxyData* pdata, void* /*
return FALSE; return FALSE;
} }
dump_set_plugin_data(plugin, pdata, cfg); if (!dump_set_plugin_data(plugin, pdata, cfg))
return FALSE;
WLog_DBG(TAG, "starting session dump %" PRIu64, cfg->session()); WLog_DBG(TAG, "starting session dump %" PRIu64, cfg->session());
return TRUE; return TRUE;
} }
static BOOL dump_session_end(proxyPlugin* plugin, proxyData* pdata, void* /*unused*/) [[nodiscard]] static BOOL dump_session_end(proxyPlugin* plugin, proxyData* pdata, void* /*unused*/)
{ {
WINPR_ASSERT(plugin); WINPR_ASSERT(plugin);
WINPR_ASSERT(pdata); WINPR_ASSERT(pdata);
@@ -411,11 +419,10 @@ static BOOL dump_session_end(proxyPlugin* plugin, proxyData* pdata, void* /*unus
auto cfg = dump_get_plugin_data(plugin, pdata); auto cfg = dump_get_plugin_data(plugin, pdata);
if (cfg) if (cfg)
WLog_DBG(TAG, "ending session dump %" PRIu64, cfg->session()); WLog_DBG(TAG, "ending session dump %" PRIu64, cfg->session());
dump_set_plugin_data(plugin, pdata, nullptr); return dump_set_plugin_data(plugin, pdata, nullptr);
return TRUE;
} }
static BOOL dump_unload(proxyPlugin* plugin) [[nodiscard]] static BOOL dump_unload(proxyPlugin* plugin)
{ {
if (!plugin) if (!plugin)
return TRUE; return TRUE;
@@ -423,7 +430,8 @@ static BOOL dump_unload(proxyPlugin* plugin)
return TRUE; return TRUE;
} }
static BOOL int_proxy_module_entry_point(proxyPluginsManager* plugins_manager, void* userdata) [[nodiscard]] static BOOL int_proxy_module_entry_point(proxyPluginsManager* plugins_manager,
void* userdata)
{ {
proxyPlugin plugin = {}; proxyPlugin plugin = {};
@@ -451,6 +459,7 @@ extern "C"
{ {
#endif #endif
#if defined(BUILD_SHARED_LIBS) #if defined(BUILD_SHARED_LIBS)
[[nodiscard]]
FREERDP_API BOOL proxy_module_entry_point(proxyPluginsManager* plugins_manager, void* userdata); FREERDP_API BOOL proxy_module_entry_point(proxyPluginsManager* plugins_manager, void* userdata);
BOOL proxy_module_entry_point(proxyPluginsManager* plugins_manager, void* userdata) BOOL proxy_module_entry_point(proxyPluginsManager* plugins_manager, void* userdata)
@@ -458,6 +467,7 @@ extern "C"
return int_proxy_module_entry_point(plugins_manager, userdata); return int_proxy_module_entry_point(plugins_manager, userdata);
} }
#else #else
[[nodiscard]]
FREERDP_API BOOL dyn_channel_dump_proxy_module_entry_point(proxyPluginsManager* plugins_manager, FREERDP_API BOOL dyn_channel_dump_proxy_module_entry_point(proxyPluginsManager* plugins_manager,
void* userdata); void* userdata);
BOOL dyn_channel_dump_proxy_module_entry_point(proxyPluginsManager* plugins_manager, void* userdata) BOOL dyn_channel_dump_proxy_module_entry_point(proxyPluginsManager* plugins_manager, void* userdata)

View File

@@ -1170,8 +1170,11 @@ static BOOL shadow_client_send_surface_gfx(rdpShadowClient* client, const BYTE*
if (client->first_frame) if (client->first_frame)
{ {
if (!rfx_context_reset(encoder->rfx, nWidth, nHeight)) if (encoder->rfx)
return FALSE; {
if (!rfx_context_reset(encoder->rfx, nWidth, nHeight))
return FALSE;
}
client->first_frame = FALSE; client->first_frame = FALSE;
} }
@@ -2501,7 +2504,8 @@ static DWORD WINAPI shadow_client_thread(LPVOID arg)
{ {
if (WaitForSingleObject(gfxevent, 0) == WAIT_OBJECT_0) if (WaitForSingleObject(gfxevent, 0) == WAIT_OBJECT_0)
{ {
if (!rdpgfx_server_handle_messages(client->rdpgfx)) const UINT error = rdpgfx_server_handle_messages(client->rdpgfx);
if (error != CHANNEL_RC_OK)
goto fail; goto fail;
} }
} }