@@ -1010,6 +1010,12 @@ void handle_full_top_update(bin_packet_t *packet, node_info_t *source,
10101010
10111011 bin_pop_int (packet , & no_nodes );
10121012
1013+ if (no_nodes < 0 || no_nodes > MAX_NO_NODES ) {
1014+ LM_WARN ("Invalid number of nodes [%d] in topology update from node [%d]\n" ,
1015+ no_nodes , source -> node_id );
1016+ return ;
1017+ }
1018+
10131019 for (i = 0 ; i < no_nodes ; i ++ ) {
10141020 bin_pop_int (packet , & top_node_id [i ]); /* node id */
10151021
@@ -1025,6 +1031,12 @@ void handle_full_top_update(bin_packet_t *packet, node_info_t *source,
10251031 bin_pop_int (packet , & top_node_info [i ][2 ]); /* ls_timestamp */
10261032 bin_pop_int (packet , & top_node_info [i ][3 ]); /* no_neigh */
10271033
1034+ if (top_node_info [i ][3 ] < 0 || top_node_info [i ][3 ] > MAX_NO_NODES ) {
1035+ LM_WARN ("Invalid number of neighbours [%d] for node [%d] in topology update from node [%d]\n" ,
1036+ top_node_info [i ][3 ], top_node_id [i ], source -> node_id );
1037+ return ;
1038+ }
1039+
10281040 for (j = 0 ; j < top_node_info [i ][3 ]; j ++ )
10291041 bin_pop_int (packet , & top_node_info [i ][j + 4 ]); /* neighbor id */
10301042 }
@@ -1077,6 +1089,7 @@ void handle_full_top_update(bin_packet_t *packet, node_info_t *source,
10771089
10781090 lock_release (top_node -> lock );
10791091
1092+ no_present_nodes = 0 ;
10801093 for (j = 0 ; j < top_node_info [i ][3 ]; j ++ ) {
10811094 top_neigh = get_node_by_id (source -> cluster , top_node_info [i ][j + 4 ]);
10821095 if (!top_neigh && top_node_info [i ][j + 4 ] != current_id ) {
@@ -1368,6 +1381,12 @@ void handle_pong(bin_packet_t *received, node_info_t *src_node,
13681381 int node_list [MAX_NO_NODES ], i , nr_nodes ;
13691382
13701383 bin_pop_int (received , & nr_nodes );
1384+ if (nr_nodes < 0 || nr_nodes > MAX_NO_NODES ) {
1385+ LM_WARN ("Invalid number of nodes [%d] in pong from node [%d]\n" ,
1386+ nr_nodes , src_node -> node_id );
1387+ return ;
1388+ }
1389+
13711390 for (i = 0 ; i < nr_nodes ; i ++ )
13721391 bin_pop_int (received , & node_list [i ]);
13731392
0 commit comments