Skip to content

Commit cd625b8

Browse files
Modify the moduledata check
1 parent 4e8c7dd commit cd625b8

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

src/main/java/golanganalyzerextension/StructureManager.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -481,15 +481,18 @@ boolean init_basig_golang_datatype() {
481481
long type_addr_value=0;
482482
long typelink_addr_value=0;
483483
long typelink_len=0;
484+
Address text_addr=null;
484485
boolean is_go16=false;
485486
if(is_go118) {
486487
type_addr_value=go_bin.get_address_value(base_addr, 35*pointer_size, pointer_size);
487488
typelink_addr_value=go_bin.get_address_value(base_addr, 42*pointer_size, pointer_size);
488489
typelink_len=go_bin.get_address_value(base_addr, 43*pointer_size, pointer_size);
490+
text_addr=go_bin.get_address(go_bin.get_address_value(base_addr, 22*pointer_size, pointer_size));
489491
}else if(is_go116) {
490492
type_addr_value=go_bin.get_address_value(base_addr, 35*pointer_size, pointer_size);
491493
typelink_addr_value=go_bin.get_address_value(base_addr, 40*pointer_size, pointer_size);
492494
typelink_len=go_bin.get_address_value(base_addr, 41*pointer_size, pointer_size);
495+
text_addr=go_bin.get_address(go_bin.get_address_value(base_addr, 22*pointer_size, pointer_size));
493496
}else {
494497
type_addr_value=go_bin.get_address_value(base_addr, 25*pointer_size, pointer_size);
495498
typelink_addr_value=go_bin.get_address_value(base_addr, 30*pointer_size, pointer_size);
@@ -508,12 +511,14 @@ boolean init_basig_golang_datatype() {
508511
is_go16=true;
509512
typelink_len=go_bin.get_address_value(base_addr, 26*pointer_size, pointer_size);
510513
}
514+
text_addr=go_bin.get_address(go_bin.get_address_value(base_addr, 12*pointer_size, pointer_size));
511515
}
512516

517+
513518
Address type_addr=go_bin.get_address(type_addr_value);
514519
Address typelink_addr=go_bin.get_address(typelink_addr_value);
515520

516-
if((!go_bin.is_valid_address(type_addr) || !go_bin.is_valid_address(typelink_addr)) && !is_go16)
521+
if(!go_bin.is_valid_address(type_addr) || (!go_bin.is_valid_address(typelink_addr) && !is_go16) || !text_addr.equals(go_bin.get_section(".text")))
517522
{
518523
base_addr=go_bin.get_address(base_addr, 4);
519524
if(base_addr==null) {

0 commit comments

Comments
 (0)