diff --git a/rpcs3/Emu/NP/rpcn_client.cpp b/rpcs3/Emu/NP/rpcn_client.cpp index deb4c9a0b7..885b29f825 100644 --- a/rpcs3/Emu/NP/rpcn_client.cpp +++ b/rpcs3/Emu/NP/rpcn_client.cpp @@ -3249,10 +3249,19 @@ namespace rpcn return; } + const u32 main_type = pb_mdata->maintype().value(); + const u32 sub_type = pb_mdata->subtype().value(); + + if (main_type > std::numeric_limits::max() || sub_type > std::numeric_limits::max()) + { + rpcn_log.warning("Discarded message with invalid type! (main_type=%u, sub_type=%u)", main_type, sub_type); + return; + } + message_data mdata = { .msgId = message_counter, - .mainType = ::narrow(pb_mdata->maintype().value()), - .subType = ::narrow(pb_mdata->subtype().value()), + .mainType = static_cast(main_type), + .subType = static_cast(sub_type), .msgFeatures = pb_mdata->msgfeatures(), .subject = pb_mdata->subject(), .body = pb_mdata->body()};