Skip to content

Commit 7b27b96

Browse files
Fix the function to modify the argument
1 parent b87ce94 commit 7b27b96

File tree

1 file changed

+17
-9
lines changed

1 file changed

+17
-9
lines changed

src/main/java/golanganalyzerextension/GolangAnalyzerExtensionAnalyzer.java

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@
1818
import java.io.File;
1919
import java.io.FileWriter;
2020
import java.io.IOException;
21+
import java.util.ArrayList;
22+
import java.util.List;
23+
2124
import ghidra.app.cmd.function.CreateFunctionCmd;
2225
import ghidra.app.services.AbstractAnalyzer;
2326
import ghidra.app.services.AnalyzerType;
@@ -27,6 +30,7 @@
2730
import ghidra.program.model.address.AddressSetView;
2831
import ghidra.program.model.listing.Data;
2932
import ghidra.program.model.listing.Function;
33+
import ghidra.program.model.listing.Function.FunctionUpdateType;
3034
import ghidra.program.model.listing.Listing;
3135
import ghidra.program.model.listing.Parameter;
3236
import ghidra.program.model.listing.ParameterImpl;
@@ -226,18 +230,22 @@ void modify_function(Program program, long func_addr_value, int args_num) {
226230
}
227231

228232
try {
229-
for(int i=func.getAutoParameterCount();i<args_num/get_pointer_size(program);i++) {
230-
ParameterImpl param=null;
231-
if(get_pointer_size(program)==8) {
232-
param=new ParameterImpl(String.format("param_%d", i+1), new Undefined8DataType(), func.getProgram());
233+
List<Parameter> new_params=new ArrayList<>();
234+
for(int i=0;i<args_num/get_pointer_size(program);i++) {
235+
if(i<func.getParameterCount()) {
236+
new_params.add(func.getParameter(i));
233237
}else {
234-
param=new ParameterImpl(String.format("param_%d", i+1), new Undefined4DataType(), func.getProgram());
238+
Parameter param=null;
239+
if(get_pointer_size(program)==8) {
240+
param=new ParameterImpl(String.format("param_%d", i+1), new Undefined8DataType(), func.getProgram());
241+
}else {
242+
param=new ParameterImpl(String.format("param_%d", i+1), new Undefined4DataType(), func.getProgram());
243+
}
244+
new_params.add(param);
235245
}
236-
func.addParameter(param, SourceType.USER_DEFINED);
237-
}
238-
for(int i=func.getAutoParameterCount();i>args_num/get_pointer_size(program);i--) {
239-
func.removeParameter(i-1);
240246
}
247+
248+
func.updateFunction(null, null, new_params, FunctionUpdateType.DYNAMIC_STORAGE_ALL_PARAMS, true, SourceType.ANALYSIS);
241249
}catch(Exception e) {
242250
}
243251
}

0 commit comments

Comments
 (0)