joern icon indicating copy to clipboard operation
joern copied to clipboard

[ghidra2cpg] Fix function signature mismatch

Open gemesa opened this issue 8 months ago • 2 comments

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>

gemesa avatar May 07 '25 22:05 gemesa

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.

itsacoderepo avatar May 08 '25 07:05 itsacoderepo

Any updates on this PR @itsacoderepo?

max-leuthaeuser avatar May 27 '25 14:05 max-leuthaeuser