@@ -635,11 +635,10 @@ aot_validate_app_addr(AOTModuleInstance *module_inst,
635635 goto fail ;
636636 }
637637
638- if (app_offset <= module_inst -> heap_base_offset
639- || app_offset + (int32 )size > (int32 )module_inst -> memory_data_size ) {
640- goto fail ;
638+ if (module_inst -> heap_base_offset <= app_offset
639+ && app_offset + (int32 )size <= (int32 )module_inst -> memory_data_size ) {
640+ return true ;
641641 }
642- return true;
643642fail :
644643 aot_set_exception (module_inst , "out of bounds memory access" );
645644 return false;
@@ -657,12 +656,11 @@ aot_validate_native_addr(AOTModuleInstance *module_inst,
657656 goto fail ;
658657 }
659658
660- if (addr <= (uint8 * )module_inst -> heap_data .ptr
661- || addr + size > (uint8 * )module_inst -> memory_data .ptr
662- + memory_data_size ) {
663- goto fail ;
659+ if ((uint8 * )module_inst -> heap_data .ptr <= addr
660+ && addr + size <= (uint8 * )module_inst -> memory_data .ptr
661+ + memory_data_size ) {
662+ return true ;
664663 }
665- return true;
666664fail :
667665 aot_set_exception (module_inst , "out of bounds memory access" );
668666 return false;
@@ -674,7 +672,7 @@ aot_addr_app_to_native(AOTModuleInstance *module_inst, int32 app_offset)
674672 int32 memory_data_size = (int32 )module_inst -> memory_data_size ;
675673 uint8 * addr = (uint8 * )module_inst -> memory_data .ptr + app_offset ;
676674
677- if ((uint8 * )module_inst -> heap_data .ptr < addr
675+ if ((uint8 * )module_inst -> heap_data .ptr <= addr
678676 && addr < (uint8 * )module_inst -> memory_data .ptr
679677 + memory_data_size )
680678 return addr ;
@@ -687,7 +685,7 @@ aot_addr_native_to_app(AOTModuleInstance *module_inst, void *native_ptr)
687685 uint8 * addr = (uint8 * )native_ptr ;
688686 int32 memory_data_size = (int32 )module_inst -> memory_data_size ;
689687
690- if ((uint8 * )module_inst -> heap_data .ptr < addr
688+ if ((uint8 * )module_inst -> heap_data .ptr <= addr
691689 && addr < (uint8 * )module_inst -> memory_data .ptr
692690 + memory_data_size )
693691 return (int32 )(addr - (uint8 * )module_inst -> memory_data .ptr );
@@ -702,7 +700,7 @@ aot_get_app_addr_range(AOTModuleInstance *module_inst,
702700{
703701 int32 memory_data_size = (int32 )module_inst -> memory_data_size ;
704702
705- if (module_inst -> heap_base_offset < app_offset
703+ if (module_inst -> heap_base_offset <= app_offset
706704 && app_offset < memory_data_size ) {
707705 if (p_app_start_offset )
708706 * p_app_start_offset = module_inst -> heap_base_offset ;
@@ -722,7 +720,7 @@ aot_get_native_addr_range(AOTModuleInstance *module_inst,
722720 uint8 * addr = (uint8 * )native_ptr ;
723721 int32 memory_data_size = (int32 )module_inst -> memory_data_size ;
724722
725- if ((uint8 * )module_inst -> heap_data .ptr < addr
723+ if ((uint8 * )module_inst -> heap_data .ptr <= addr
726724 && addr < (uint8 * )module_inst -> memory_data .ptr
727725 + memory_data_size ) {
728726 if (p_native_start_addr )
0 commit comments