Просмотр исходного кода

Limit the minimal size of bh_hashmap (#2073)

Limit the minimal size of bh_hashmap to avoid creating hashmap with size 0,
and `divide by zero` when calling bh_hash_map_find.

Reported by #2008.
Wenyong Huang 2 лет назад
Родитель
Сommit
8ee8ab3099
2 измененных файлов с 6 добавлено и 0 удалено
  1. 3 0
      core/shared/utils/bh_hashmap.c
  2. 3 0
      core/shared/utils/bh_hashmap.h

+ 3 - 0
core/shared/utils/bh_hashmap.c

@@ -33,6 +33,9 @@ bh_hash_map_create(uint32 size, bool use_lock, HashFunc hash_func,
     HashMap *map;
     HashMap *map;
     uint64 total_size;
     uint64 total_size;
 
 
+    if (size < HASH_MAP_MIN_SIZE)
+        size = HASH_MAP_MIN_SIZE;
+
     if (size > HASH_MAP_MAX_SIZE) {
     if (size > HASH_MAP_MAX_SIZE) {
         LOG_ERROR("HashMap create failed: size is too large.\n");
         LOG_ERROR("HashMap create failed: size is too large.\n");
         return NULL;
         return NULL;

+ 3 - 0
core/shared/utils/bh_hashmap.h

@@ -12,6 +12,9 @@
 extern "C" {
 extern "C" {
 #endif
 #endif
 
 
+/* Minimum initial size of hash map */
+#define HASH_MAP_MIN_SIZE 4
+
 /* Maximum initial size of hash map */
 /* Maximum initial size of hash map */
 #define HASH_MAP_MAX_SIZE 65536
 #define HASH_MAP_MAX_SIZE 65536