[LLVMbugs] [Bug 5601] New: llvm-as: ParseFunctionHeader in LLParser. cpp poorly handles incorrect forward declarations

bugzilla-daemon at cs.uiuc.edu bugzilla-daemon at cs.uiuc.edu
Tue Nov 24 01:04:08 PST 2009


http://llvm.org/bugs/show_bug.cgi?id=5601

           Summary: llvm-as: ParseFunctionHeader in LLParser.cpp poorly
                    handles incorrect forward declarations
           Product: new-bugs
           Version: 2.6
          Platform: Macintosh
        OS/Version: MacOS X
            Status: NEW
          Severity: normal
          Priority: P2
         Component: new bugs
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: arlencox at gmail.com
                CC: llvmbugs at cs.uiuc.edu


Created an attachment (id=3860)
 --> (http://llvm.org/bugs/attachment.cgi?id=3860)
A minimal testcase to cause the failure

A forward function declaration, if it has a greater number of arguments than is
used in the file, will cause an assertion error instead of a type mismatch
error.

In LLParser.cpp, line 2538:
  // Add all of the arguments we parsed to the function.
  Function::arg_iterator ArgIt = Fn->arg_begin();
  for (unsigned i = 0, e = ArgList.size(); i != e; ++i, ++ArgIt) {
    // If the argument has a name, insert it into the argument symbol table.
    if (ArgList[i].Name.empty()) continue;

    // Set the name, if it conflicted, it will be auto-renamed.
    ArgIt->setName(ArgList[i].Name);

    if (ArgIt->getNameStr() != ArgList[i].Name)
      return Error(ArgList[i].Loc, "redefinition of argument '%" +
                   ArgList[i].Name + "'");
  }

I don't believe ArgIt should always be incremented.  If ArgIt reaches the end
before i == e, a type error should be raised.


-- 
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.



More information about the llvm-bugs mailing list