fix segfault
authorhgn <hgodden00@gmail.com>
Sun, 1 Oct 2023 05:49:35 +0000 (06:49 +0100)
committerhgn <hgodden00@gmail.com>
Sun, 1 Oct 2023 05:49:35 +0000 (06:49 +0100)
gameserver.c
player_remote.c

index b6ca2104a38324dcb1cce368e7e072801dd49be8..00c39f3013d9db8a3744281583206344d645e183 100644 (file)
@@ -95,6 +95,7 @@ static void gameserver_player_join( int index ){
       chs = vg_strncpy( client->item_player, item->uid, ADDON_UID_MAX, 
                         k_strncpy_always_add_null );
       item->type = k_addon_type_player;
+      item->client = i;
       size = sizeof(netmsg_playeritem) + chs + 1;
       SteamAPI_ISteamNetworkingSockets_SendMessageToConnection(
             hSteamNetworkingSockets, joiner->connection,
@@ -103,6 +104,7 @@ static void gameserver_player_join( int index ){
       chs = vg_strncpy( client->item_board, item->uid, ADDON_UID_MAX, 
                         k_strncpy_always_add_null );
       item->type = k_addon_type_board;
+      item->client = i;
       size = sizeof(netmsg_playeritem) + chs + 1;
       SteamAPI_ISteamNetworkingSockets_SendMessageToConnection(
             hSteamNetworkingSockets, joiner->connection,
index f81cdf50ec3259a256a655a61aa24a3f9e68febf..6b66656a078ef995b1f810ad3b9eca00c244af72 100644 (file)
@@ -132,6 +132,11 @@ static void player_remote_rx_200_300( SteamNetworkingMessage_t *msg ){
       netmsg_playeritem *item = msg->m_pData;
       if( !packet_minsize( msg, sizeof(*item)+1 )) return;
 
+      if( item->client >= vg_list_size(netplayers.list) ){
+         vg_error( "inetmsg_playerframe: player index out of range\n" );
+         return;
+      }
+
       vg_info( "Client #%u equiped: [%u] %s\n", 
                item->client, item->type, item->uid );