joern
joern copied to clipboard
[ghidra2cpg] Fix function signature mismatch
Fixes #5473
The reason for the mismatch is that previously different APIs have been used.
Before:
joern> cpg.method("vuln").l
val res1: List[io.shiftleft.codepropertygraph.generated.nodes.Method] = List(
Method(
astParentFullName = "/home/gemesa/git-repos/tmp/vuln:<global>",
astParentType = "NAMESPACE_BLOCK",
code = """
int vuln(void)
{
int iVar1;
char acStack_8 [8];
printf("Enter some text: ");
__isoc23_scanf(&DAT_004007f8,acStack_8);
iVar1 = puts(acStack_8);
return iVar1;
}
""",
columnNumber = Some(value = -1),
columnNumberEnd = None,
filename = "/home/gemesa/git-repos/tmp/vuln",
fullName = "vuln",
genericSignature = "<empty>",
hash = None,
isExternal = false,
lineNumber = Some(value = 4196196),
lineNumberEnd = Some(value = -1),
name = "vuln",
offset = None,
offsetEnd = None,
order = 0,
signature = "undefined vuln(void)"
)
)
joern>
After:
joern> cpg.method("vuln").l
val res1: List[io.shiftleft.codepropertygraph.generated.nodes.Method] = List(
Method(
astParentFullName = "/home/gemesa/git-repos/tmp/vuln:<global>",
astParentType = "NAMESPACE_BLOCK",
code = """
int vuln(void)
{
int iVar1;
char acStack_8 [8];
printf("Enter some text: ");
__isoc23_scanf(&DAT_004007f8,acStack_8);
iVar1 = puts(acStack_8);
return iVar1;
}
""",
columnNumber = Some(value = -1),
columnNumberEnd = None,
filename = "/home/gemesa/git-repos/tmp/vuln",
fullName = "vuln",
genericSignature = "<empty>",
hash = None,
isExternal = false,
lineNumber = Some(value = 4196196),
lineNumberEnd = Some(value = -1),
name = "vuln",
offset = None,
offsetEnd = None,
order = 0,
signature = "int vuln(void);"
)
)
joern>
Thanks for the PR!
DON'T merge yet as it might have impact on tests!
I'll merge this on 19.05., when i can handle failures and adjust expectations.
Any updates on this PR @itsacoderepo?