mirror of
				https://github.com/bytecodealliance/wasm-micro-runtime.git
				synced 2025-10-31 05:11:19 +00:00 
			
		
		
		
	Fix some issues reported by CodeQL (#3064)
Refer to https://github.com/bytecodealliance/wasm-micro-runtime/pull/2812 and https://github.com/bytecodealliance/wasm-micro-runtime/security/code-scanning?query=pr%3A2812+is%3Aopen
This commit is contained in:
		
							parent
							
								
									ab97d543e0
								
							
						
					
					
						commit
						9f64340529
					
				|  | @ -3134,8 +3134,7 @@ resolve_execute_mode(const uint8 *buf, uint32 size, bool *p_mode, | |||
|     p += 8; | ||||
|     while (p < p_end) { | ||||
|         read_uint32(p, p_end, section_type); | ||||
|         if (section_type <= AOT_SECTION_TYPE_SIGANATURE | ||||
|             || section_type == AOT_SECTION_TYPE_TARGET_INFO) { | ||||
|         if (section_type <= AOT_SECTION_TYPE_SIGANATURE) { | ||||
|             read_uint32(p, p_end, section_size); | ||||
|             CHECK_BUF(p, p_end, section_size); | ||||
|             if (section_type == AOT_SECTION_TYPE_TARGET_INFO) { | ||||
|  | @ -3150,7 +3149,7 @@ resolve_execute_mode(const uint8 *buf, uint32 size, bool *p_mode, | |||
|                 break; | ||||
|             } | ||||
|         } | ||||
|         else if (section_type > AOT_SECTION_TYPE_SIGANATURE) { | ||||
|         else { /* section_type > AOT_SECTION_TYPE_SIGANATURE */ | ||||
|             set_error_buf(error_buf, error_buf_size, | ||||
|                           "resolve execute mode failed"); | ||||
|             break; | ||||
|  |  | |||
|  | @ -2294,7 +2294,7 @@ wasm_module_new(wasm_store_t *store, const wasm_byte_vec_t *binary) | |||
|         (uint8 *)module_ex->binary->data, (uint32)module_ex->binary->size, | ||||
|         error_buf, (uint32)sizeof(error_buf)); | ||||
|     if (!(module_ex->module_comm_rt)) { | ||||
|         LOG_ERROR(error_buf); | ||||
|         LOG_ERROR("%s", error_buf); | ||||
|         goto free_vec; | ||||
|     } | ||||
| 
 | ||||
|  | @ -2367,7 +2367,7 @@ wasm_module_validate(wasm_store_t *store, const wasm_byte_vec_t *binary) | |||
|     } | ||||
|     else { | ||||
|         ret = false; | ||||
|         LOG_VERBOSE(error_buf); | ||||
|         LOG_VERBOSE("%s", error_buf); | ||||
|     } | ||||
| 
 | ||||
|     return ret; | ||||
|  | @ -3359,7 +3359,7 @@ wasm_func_call(const wasm_func_t *func, const wasm_val_vec_t *params, | |||
|     wasm_runtime_set_exception(func->inst_comm_rt, NULL); | ||||
|     if (!wasm_runtime_call_wasm(exec_env, func_comm_rt, argc, argv)) { | ||||
|         if (wasm_runtime_get_exception(func->inst_comm_rt)) { | ||||
|             LOG_DEBUG(wasm_runtime_get_exception(func->inst_comm_rt)); | ||||
|             LOG_DEBUG("%s", wasm_runtime_get_exception(func->inst_comm_rt)); | ||||
|             goto failed; | ||||
|         } | ||||
|     } | ||||
|  | @ -5044,7 +5044,7 @@ failed: | |||
|         *trap = wasm_trap_new(store, &message); | ||||
|         wasm_byte_vec_delete(&message); | ||||
|     } | ||||
|     LOG_DEBUG(error_buf); | ||||
|     LOG_DEBUG("%s", error_buf); | ||||
|     wasm_instance_delete_internal(instance); | ||||
|     return NULL; | ||||
| } | ||||
|  |  | |||
|  | @ -194,7 +194,7 @@ wasm_native_resolve_symbol(const char *module_name, const char *field_name, | |||
| { | ||||
|     NativeSymbolsNode *node, *node_next; | ||||
|     const char *signature = NULL; | ||||
|     void *func_ptr = NULL, *attachment; | ||||
|     void *func_ptr = NULL, *attachment = NULL; | ||||
| 
 | ||||
|     node = g_native_symbols_list; | ||||
|     while (node) { | ||||
|  |  | |||
|  | @ -2905,7 +2905,8 @@ copy_string_array(const char *array[], uint32 array_size, char **buf_ptr, | |||
|     /* We add +1 to generate null-terminated array of strings */ | ||||
|     total_size = sizeof(char *) * ((uint64)array_size + 1); | ||||
|     if (total_size >= UINT32_MAX | ||||
|         || (total_size > 0 && !(list = wasm_runtime_malloc((uint32)total_size))) | ||||
|         /* total_size must be larger than 0, don' check it again */ | ||||
|         || !(list = wasm_runtime_malloc((uint32)total_size)) | ||||
|         || buf_size >= UINT32_MAX | ||||
|         || (buf_size > 0 && !(buf = wasm_runtime_malloc((uint32)buf_size)))) { | ||||
| 
 | ||||
|  |  | |||
|  | @ -327,7 +327,7 @@ check_utf8_str(const uint8 *str, uint32 len) | |||
|                     return false; | ||||
|                 } | ||||
|             } | ||||
|             else if (chr >= 0xE1 && chr <= 0xEF) { | ||||
|             else { /* chr >= 0xE1 && chr <= 0xEF */ | ||||
|                 if (p[1] < 0x80 || p[1] > 0xBF || p[2] < 0x80 || p[2] > 0xBF) { | ||||
|                     return false; | ||||
|                 } | ||||
|  | @ -341,13 +341,13 @@ check_utf8_str(const uint8 *str, uint32 len) | |||
|                     return false; | ||||
|                 } | ||||
|             } | ||||
|             else if (chr >= 0xF1 && chr <= 0xF3) { | ||||
|             else if (chr <= 0xF3) { /* and also chr >= 0xF1 */ | ||||
|                 if (p[1] < 0x80 || p[1] > 0xBF || p[2] < 0x80 || p[2] > 0xBF | ||||
|                     || p[3] < 0x80 || p[3] > 0xBF) { | ||||
|                     return false; | ||||
|                 } | ||||
|             } | ||||
|             else if (chr == 0xF4) { | ||||
|             else { /* chr == 0xF4 */ | ||||
|                 if (p[1] < 0x80 || p[1] > 0x8F || p[2] < 0x80 || p[2] > 0xBF | ||||
|                     || p[3] < 0x80 || p[3] > 0xBF) { | ||||
|                     return false; | ||||
|  |  | |||
|  | @ -2013,7 +2013,8 @@ copy_buffer_to_iovec_app(wasm_module_inst_t module_inst, uint8 *buf_begin, | |||
|         } | ||||
| 
 | ||||
|         if (buf >= buf_begin + buf_size | ||||
|             || buf + data->buf_len < buf /* integer overflow */ | ||||
|             /* integer overflow */ | ||||
|             || data->buf_len > UINTPTR_MAX - (uintptr_t)buf | ||||
|             || buf + data->buf_len > buf_begin + buf_size | ||||
|             || size_to_copy == 0) { | ||||
|             break; | ||||
|  |  | |||
|  | @ -787,7 +787,7 @@ wasm_cluster_dup_c_api_imports(WASMModuleInstanceCommon *module_inst_dst, | |||
| { | ||||
|     /* workaround about passing instantiate-linking information */ | ||||
|     CApiFuncImport **new_c_api_func_imports = NULL; | ||||
|     CApiFuncImport *c_api_func_imports; | ||||
|     CApiFuncImport *c_api_func_imports = NULL; | ||||
|     uint32 import_func_count = 0; | ||||
|     uint32 size_in_bytes = 0; | ||||
| 
 | ||||
|  |  | |||
|  | @ -884,7 +884,7 @@ os_socket_set_ip_ttl(bh_socket_t socket, uint8_t ttl_s) | |||
| int | ||||
| os_socket_get_ip_ttl(bh_socket_t socket, uint8_t *ttl_s) | ||||
| { | ||||
|     socklen_t opt_len = sizeof(ttl_s); | ||||
|     socklen_t opt_len = sizeof(*ttl_s); | ||||
|     if (getsockopt(socket, IPPROTO_IP, IP_TTL, ttl_s, &opt_len) != 0) { | ||||
|         return BHT_ERROR; | ||||
|     } | ||||
|  | @ -906,7 +906,7 @@ os_socket_set_ip_multicast_ttl(bh_socket_t socket, uint8_t ttl_s) | |||
| int | ||||
| os_socket_get_ip_multicast_ttl(bh_socket_t socket, uint8_t *ttl_s) | ||||
| { | ||||
|     socklen_t opt_len = sizeof(ttl_s); | ||||
|     socklen_t opt_len = sizeof(*ttl_s); | ||||
|     if (getsockopt(socket, IPPROTO_IP, IP_MULTICAST_TTL, ttl_s, &opt_len) | ||||
|         != 0) { | ||||
|         return BHT_ERROR; | ||||
|  |  | |||
|  | @ -51,7 +51,9 @@ bh_hash_map_create(uint32 size, bool use_lock, HashFunc hash_func, | |||
|                  + sizeof(HashMapElem *) * (uint64)size | ||||
|                  + (use_lock ? sizeof(korp_mutex) : 0); | ||||
| 
 | ||||
|     if (total_size >= UINT32_MAX || !(map = BH_MALLOC((uint32)total_size))) { | ||||
|     /* size <= HASH_MAP_MAX_SIZE, so total_size won't be larger than
 | ||||
|        UINT32_MAX, no need to check integer overflow */ | ||||
|     if (!(map = BH_MALLOC((uint32)total_size))) { | ||||
|         LOG_ERROR("HashMap create failed: alloc memory failed.\n"); | ||||
|         return NULL; | ||||
|     } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Wenyong Huang
						Wenyong Huang