]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Bugfix: buffer overflow in hash_test.c
authorIgor Putovny <igor.putovny@nic.cz>
Wed, 11 Jun 2025 10:00:23 +0000 (12:00 +0200)
committerIgor Putovny <igor.putovny@nic.cz>
Mon, 16 Jun 2025 11:01:17 +0000 (13:01 +0200)
This bug manifested itself as segmentation fault of t_insert2_find test when
TEST_ORDER was increased from 13 to 14. When checking the validity of filled
table, the table is iterated from 0 to MAX_NUM. However, when order is an even
number, the size of the table is lower than MAX_NUM (due to table resizing),
which caused reading beyond the allocated memory.

lib/hash_test.c

index 4bce70179e0fcdf0416421018e1d8ec86de97100..bf782c65dad4c26f2ba07eece341e4524914b444 100644 (file)
@@ -37,10 +37,9 @@ struct test_node nodes[MAX_NUM];
 static void
 print_rate_of_fulfilment(void)
 {
-  int i;
   int num_stacked_items = 0;
 
-  for (i = 0; i < MAX_NUM; i++)
+  for (size_t i = 0; i < HASH_SIZE(hash); i++)
     if (!hash.data[i])
       num_stacked_items++;