Эх сурвалжийг харах

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 жил өмнө
parent
commit
8ee8ab3099

+ 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;
     uint64 total_size;
 
+    if (size < HASH_MAP_MIN_SIZE)
+        size = HASH_MAP_MIN_SIZE;
+
     if (size > HASH_MAP_MAX_SIZE) {
         LOG_ERROR("HashMap create failed: size is too large.\n");
         return NULL;

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

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