sqc 0.4.84

Software Code Quality - CERT C compliance checker
{
  "ground_truth": [],
  "labels": [
    {"rule":"PRE00-C","file":"lparser.c","line":38,"verdict":"FP","confidence":"high","reason":"hasmultret evaluates k once; no multiple-eval side-effect possible"},
    {"rule":"PRE12-C","file":"lparser.c","line":38,"verdict":"FP","confidence":"high","reason":"k appears once in replacement text; no multiple evaluation"},
    {"rule":"MSC37-C","file":"lparser.c","line":68,"verdict":"FP","confidence":"high","reason":"error_expected declared l_noret; control never reaches end"},
    {"rule":"MSC37-C","file":"lparser.c","line":74,"verdict":"FP","confidence":"high","reason":"errorlimit declared l_noret; control never reaches end"},
    {"rule":"DCL13-C","file":"lparser.c","line":74,"verdict":"FP","confidence":"high","reason":"fs is internal cross-TU pointer; const advisory not adopted by Lua"},
    {"rule":"PRE10-C","file":"lparser.c","line":122,"verdict":"FP","confidence":"high","reason":"check_condition body is a single if statement, not multistatement"},
    {"rule":"EXP30-C","file":"lparser.c","line":135,"verdict":"FP","confidence":"high","reason":"luaX_token2str has no side effects; unsequenced evaluation is safe"},
    {"rule":"DCL30-C","file":"lparser.c","line":148,"verdict":"FP","confidence":"high","reason":"str_checkname returns pointer value (GC-managed TString), not address of local"},
    {"rule":"DCL13-C","file":"lparser.c","line":159,"verdict":"FP","confidence":"high","reason":"Internal API pointer; const advisory not adopted by Lua"},
    {"rule":"DCL13-C","file":"lparser.c","line":175,"verdict":"FP","confidence":"high","reason":"Internal API pointer; const advisory not adopted by Lua"},
    {"rule":"DCL13-C","file":"lparser.c","line":194,"verdict":"FP","confidence":"high","reason":"Internal API pointer; const advisory not adopted by Lua"},
    {"rule":"DCL13-C","file":"lparser.c","line":194,"verdict":"FP","confidence":"high","reason":"Internal API pointer; const advisory not adopted by Lua"},
    {"rule":"EXP43-C","file":"lparser.c","line":199,"verdict":"FP","confidence":"high","reason":"luaM_growvector uses no restrict-qualified parameters; no overlap issue"},
    {"rule":"PRE00-C","file":"lparser.c","line":215,"verdict":"FP","confidence":"high","reason":"new_localvarliteral parameters each appear once; no multiple-eval"},
    {"rule":"PRE02-C","file":"lparser.c","line":215,"verdict":"FP","confidence":"high","reason":"Macro is a statement (function call), not an expression needing outer parens"},
    {"rule":"PRE11-C","file":"lparser.c","line":215,"verdict":"FP","confidence":"med","reason":"Trailing semicolon is advisory; no double-semicolon breakage at call sites"},
    {"rule":"PRE12-C","file":"lparser.c","line":215,"verdict":"FP","confidence":"high","reason":"ls appears once in replacement text; no multiple evaluation"},
    {"rule":"DCL13-C","file":"lparser.c","line":226,"verdict":"FP","confidence":"high","reason":"Internal API pointer; const advisory not adopted by Lua"},
    {"rule":"API00-C","file":"lparser.c","line":250,"verdict":"FP","confidence":"high","reason":"Internal function always called with valid non-NULL fs from compiler state"},
    {"rule":"DCL13-C","file":"lparser.c","line":360,"verdict":"FP","confidence":"high","reason":"Internal API pointer; const advisory not adopted by Lua"},
    {"rule":"EXP43-C","file":"lparser.c","line":373,"verdict":"FP","confidence":"high","reason":"luaY_checklimit takes no restrict pointers; no overlap concern"},
    {"rule":"DCL13-C","file":"lparser.c","line":382,"verdict":"FP","confidence":"high","reason":"Internal API pointer; const advisory not adopted by Lua"},
    {"rule":"MEM05-C","file":"lparser.c","line":476,"verdict":"FP","confidence":"high","reason":"enterlevel/leavelevel enforce LUAI_MAXCCALLS hard limit; depth bounded"},
    {"rule":"MSC04-C","file":"lparser.c","line":476,"verdict":"FP","confidence":"high","reason":"Recursive-descent parser design; depth gated by luaE_incCstack limit"},
    {"rule":"DCL13-C","file":"lparser.c","line":547,"verdict":"FP","confidence":"high","reason":"Internal API pointer; const advisory not adopted by Lua"},
    {"rule":"PRE01-C","file":"lparser.c","line":570,"verdict":"FP","confidence":"high","reason":"enterlevel: ls appears once, no precedence issue"},
    {"rule":"PRE00-C","file":"lparser.c","line":573,"verdict":"FP","confidence":"high","reason":"leavelevel: ls appears once; no multiple evaluation"},
    {"rule":"MSC37-C","file":"lparser.c","line":580,"verdict":"FP","confidence":"high","reason":"jumpscopeerror declared l_noret; control never falls through"},
    {"rule":"DCL13-C","file":"lparser.c","line":580,"verdict":"FP","confidence":"high","reason":"Internal API pointer; const advisory not adopted by Lua"},
    {"rule":"DCL13-C","file":"lparser.c","line":597,"verdict":"FP","confidence":"high","reason":"Internal API pointer; const advisory not adopted by Lua"},
    {"rule":"ARR00-C","file":"lparser.c","line":601,"verdict":"FP","confidence":"high","reason":"g is a validated goto list index, not an untrusted function parameter"},
    {"rule":"MEM31-C","file":"lparser.c","line":611,"verdict":"FP","confidence":"high","reason":"CREATE_ABCk creates an Instruction value (integer), not heap-allocated memory"},
    {"rule":"DCL13-C","file":"lparser.c","line":626,"verdict":"FP","confidence":"high","reason":"Internal API pointer; const advisory not adopted by Lua"},
    {"rule":"ARR00-C","file":"lparser.c","line":628,"verdict":"FP","confidence":"high","reason":"ilb is initialized as bl->firstlabel loop variable, not uninitialized"},
    {"rule":"DCL13-C","file":"lparser.c","line":640,"verdict":"FP","confidence":"high","reason":"Internal API pointer; const advisory not adopted by Lua"},
    {"rule":"DCL13-C","file":"lparser.c","line":640,"verdict":"FP","confidence":"high","reason":"Internal API pointer; const advisory not adopted by Lua"},
    {"rule":"DCL13-C","file":"lparser.c","line":696,"verdict":"FP","confidence":"high","reason":"Internal API pointer; const advisory not adopted by Lua"},
    {"rule":"MSC37-C","file":"lparser.c","line":737,"verdict":"FP","confidence":"high","reason":"undefgoto declared l_noret; control never falls through"},
    {"rule":"DCL13-C","file":"lparser.c","line":737,"verdict":"FP","confidence":"high","reason":"Internal API pointer; const advisory not adopted by Lua"},
    {"rule":"DCL13-C","file":"lparser.c","line":768,"verdict":"FP","confidence":"high","reason":"Internal API pointer; const advisory not adopted by Lua"},
    {"rule":"DCL30-C","file":"lparser.c","line":781,"verdict":"FP","confidence":"high","reason":"addprototype returns GC-heap pointer value stored in clp, not address of clp"},
    {"rule":"DCL13-C","file":"lparser.c","line":792,"verdict":"FP","confidence":"high","reason":"Internal API pointer; const advisory not adopted by Lua"},
    {"rule":"MEM31-C","file":"lparser.c","line":823,"verdict":"FP","confidence":"high","reason":"luaH_new result is GC-managed and anchored via luaD_anchorobj; not raw malloc"},
    {"rule":"DCL13-C","file":"lparser.c","line":866,"verdict":"FP","confidence":"high","reason":"Internal API pointer; const advisory not adopted by Lua"},
    {"rule":"MSC04-C","file":"lparser.c","line":877,"verdict":"FP","confidence":"high","reason":"Recursive-descent parser design; all paths guarded by enterlevel depth limit"},
    {"rule":"MSC04-C","file":"lparser.c","line":900,"verdict":"FP","confidence":"high","reason":"Recursive-descent parser design; all paths guarded by enterlevel depth limit"},
    {"rule":"MSC04-C","file":"lparser.c","line":938,"verdict":"FP","confidence":"high","reason":"Recursive-descent parser design; all paths guarded by enterlevel depth limit"},
    {"rule":"MSC04-C","file":"lparser.c","line":985,"verdict":"FP","confidence":"high","reason":"Recursive-descent parser design; all paths guarded by enterlevel depth limit"},
    {"rule":"MSC04-C","file":"lparser.c","line":992,"verdict":"FP","confidence":"high","reason":"Recursive-descent parser design; all paths guarded by enterlevel depth limit"},
    {"rule":"MSC37-C","file":"lparser.c","line":1019,"verdict":"FP","confidence":"high","reason":"maxtostore has explicit returns on all three conditional branches"},
    {"rule":"DCL13-C","file":"lparser.c","line":1019,"verdict":"FP","confidence":"high","reason":"Internal API pointer; const advisory not adopted by Lua"},
    {"rule":"MSC04-C","file":"lparser.c","line":1030,"verdict":"FP","confidence":"high","reason":"Recursive-descent parser design; all paths guarded by enterlevel depth limit"},
    {"rule":"MSC04-C","file":"lparser.c","line":1105,"verdict":"FP","confidence":"high","reason":"Recursive-descent parser design; all paths guarded by enterlevel depth limit"},
    {"rule":"MSC04-C","file":"lparser.c","line":1127,"verdict":"FP","confidence":"high","reason":"Recursive-descent parser design; all paths guarded by enterlevel depth limit"},
    {"rule":"MSC04-C","file":"lparser.c","line":1140,"verdict":"FP","confidence":"high","reason":"Recursive-descent parser design; all paths guarded by enterlevel depth limit"},
    {"rule":"EXP33-C","file":"lparser.c","line":1152,"verdict":"FP","confidence":"high","reason":"args initialized on every switch case that doesn't call syntaxerror+return"},
    {"rule":"MSC04-C","file":"lparser.c","line":1198,"verdict":"FP","confidence":"high","reason":"Recursive-descent parser design; all paths guarded by enterlevel depth limit"},
    {"rule":"MSC04-C","file":"lparser.c","line":1220,"verdict":"FP","confidence":"high","reason":"Recursive-descent parser design; all paths guarded by enterlevel depth limit"},
    {"rule":"MSC04-C","file":"lparser.c","line":1257,"verdict":"FP","confidence":"high","reason":"Recursive-descent parser design; all paths guarded by enterlevel depth limit"},
    {"rule":"ARR02-C","file":"lparser.c","line":1357,"verdict":"FP","confidence":"high","reason":"priority[] fully initialized by its literal; implicit bound advisory only"},
    {"rule":"MEM05-C","file":"lparser.c","line":1377,"verdict":"FP","confidence":"high","reason":"subexpr depth bounded by enterlevel/luaE_incCstack hard limit"},
    {"rule":"MSC04-C","file":"lparser.c","line":1377,"verdict":"FP","confidence":"high","reason":"Recursive-descent parser design; all paths guarded by enterlevel depth limit"},
    {"rule":"MSC04-C","file":"lparser.c","line":1407,"verdict":"FP","confidence":"high","reason":"Recursive-descent parser design; all paths guarded by enterlevel depth limit"},
    {"rule":"MSC04-C","file":"lparser.c","line":1422,"verdict":"FP","confidence":"high","reason":"Recursive-descent parser design; all paths guarded by enterlevel depth limit"},
    {"rule":"DCL13-C","file":"lparser.c","line":1448,"verdict":"FP","confidence":"high","reason":"Internal API pointer; const advisory not adopted by Lua"},
    {"rule":"DCL13-C","file":"lparser.c","line":1448,"verdict":"FP","confidence":"high","reason":"Internal API pointer; const advisory not adopted by Lua"},
    {"rule":"MEM05-C","file":"lparser.c","line":1501,"verdict":"FP","confidence":"high","reason":"restassign depth bounded by enterlevel/luaE_incCstack hard limit"},
    {"rule":"MSC04-C","file":"lparser.c","line":1501,"verdict":"FP","confidence":"high","reason":"Recursive-descent parser design; all paths guarded by enterlevel depth limit"},
    {"rule":"MSC04-C","file":"lparser.c","line":1531,"verdict":"FP","confidence":"high","reason":"Recursive-descent parser design; all paths guarded by enterlevel depth limit"},
    {"rule":"EXP34-C","file":"lparser.c","line":1558,"verdict":"FP","confidence":"high","reason":"bl is non-NULL: goto ok only reached when isloop found, guaranteeing bl!=NULL"},
    {"rule":"EXP34-C","file":"lparser.c","line":1572,"verdict":"FP","confidence":"high","reason":"lb from findlabel; NULL check is on line 1570 before use on 1572"},
    {"rule":"MSC04-C","file":"lparser.c","line":1576,"verdict":"FP","confidence":"high","reason":"Recursive-descent parser design; all paths guarded by enterlevel depth limit"},
    {"rule":"MSC04-C","file":"lparser.c","line":1586,"verdict":"FP","confidence":"high","reason":"Recursive-descent parser design; all paths guarded by enterlevel depth limit"},
    {"rule":"MSC04-C","file":"lparser.c","line":1605,"verdict":"FP","confidence":"high","reason":"Recursive-descent parser design; all paths guarded by enterlevel depth limit"},
    {"rule":"MSC04-C","file":"lparser.c","line":1635,"verdict":"FP","confidence":"high","reason":"Recursive-descent parser design; all paths guarded by enterlevel depth limit"},
    {"rule":"DCL13-C","file":"lparser.c","line":1648,"verdict":"FP","confidence":"high","reason":"Internal API pointer; const advisory not adopted by Lua"},
    {"rule":"ARR00-C","file":"lparser.c","line":1649,"verdict":"FP","confidence":"high","reason":"pc is a validated PC index from luaK_jump; not an unvalidated parameter"},
    {"rule":"ARR30-C","file":"lparser.c","line":1649,"verdict":"FP","confidence":"high","reason":"pc is a validated PC index from luaK_jump; not an unvalidated parameter"},
    {"rule":"MSC04-C","file":"lparser.c","line":1662,"verdict":"FP","confidence":"high","reason":"Recursive-descent parser design; all paths guarded by enterlevel depth limit"},
    {"rule":"ARR00-C","file":"lparser.c","line":1670,"verdict":"FP","confidence":"high","reason":"isgen is 0 or 1 (boolean); forprep[2] has exactly 2 elements"},
    {"rule":"ARR00-C","file":"lparser.c","line":1682,"verdict":"FP","confidence":"high","reason":"isgen is 0 or 1 (boolean); forloop[2] has exactly 2 elements"},
    {"rule":"MSC04-C","file":"lparser.c","line":1697,"verdict":"FP","confidence":"high","reason":"Recursive-descent parser design; all paths guarded by enterlevel depth limit"},
    {"rule":"MSC04-C","file":"lparser.c","line":1719,"verdict":"FP","confidence":"high","reason":"Recursive-descent parser design; all paths guarded by enterlevel depth limit"},
    {"rule":"MSC04-C","file":"lparser.c","line":1746,"verdict":"FP","confidence":"high","reason":"Recursive-descent parser design; all paths guarded by enterlevel depth limit"},
    {"rule":"MSC04-C","file":"lparser.c","line":1764,"verdict":"FP","confidence":"high","reason":"Recursive-descent parser design; all paths guarded by enterlevel depth limit"},
    {"rule":"MSC04-C","file":"lparser.c","line":1779,"verdict":"FP","confidence":"high","reason":"Recursive-descent parser design; all paths guarded by enterlevel depth limit"},
    {"rule":"MSC04-C","file":"lparser.c","line":1793,"verdict":"FP","confidence":"high","reason":"Recursive-descent parser design; all paths guarded by enterlevel depth limit"},
    {"rule":"MSC04-C","file":"lparser.c","line":1830,"verdict":"FP","confidence":"high","reason":"Recursive-descent parser design; all paths guarded by enterlevel depth limit"},
    {"rule":"MEM31-C","file":"lparser.c","line":1844,"verdict":"FP","confidence":"high","reason":"new_varkind returns integer index, not allocated memory; no free needed"},
    {"rule":"MEM05-C","file":"lparser.c","line":1906,"verdict":"FP","confidence":"high","reason":"initglobal depth bounded by enterlevel/luaE_incCstack hard limit"},
    {"rule":"MSC04-C","file":"lparser.c","line":1906,"verdict":"FP","confidence":"high","reason":"Recursive-descent parser design; all paths guarded by enterlevel depth limit"},
    {"rule":"MSC04-C","file":"lparser.c","line":1927,"verdict":"FP","confidence":"high","reason":"Recursive-descent parser design; all paths guarded by enterlevel depth limit"},
    {"rule":"MEM31-C","file":"lparser.c","line":1934,"verdict":"FP","confidence":"high","reason":"new_varkind returns integer index, not allocated memory; no free needed"},
    {"rule":"MSC04-C","file":"lparser.c","line":1943,"verdict":"FP","confidence":"high","reason":"Recursive-descent parser design; all paths guarded by enterlevel depth limit"},
    {"rule":"MSC04-C","file":"lparser.c","line":1959,"verdict":"FP","confidence":"high","reason":"Recursive-descent parser design; all paths guarded by enterlevel depth limit"},
    {"rule":"MSC04-C","file":"lparser.c","line":1974,"verdict":"FP","confidence":"high","reason":"Recursive-descent parser design; all paths guarded by enterlevel depth limit"},
    {"rule":"MSC04-C","file":"lparser.c","line":1998,"verdict":"FP","confidence":"high","reason":"Recursive-descent parser design; all paths guarded by enterlevel depth limit"},
    {"rule":"MSC04-C","file":"lparser.c","line":2011,"verdict":"FP","confidence":"high","reason":"Recursive-descent parser design; all paths guarded by enterlevel depth limit"},
    {"rule":"EXP33-C","file":"lparser.c","line":2015,"verdict":"FP","confidence":"high","reason":"v.v initialized by suffixedexp(ls, &v.v) on same line before any use"},
    {"rule":"MSC04-C","file":"lparser.c","line":2029,"verdict":"FP","confidence":"high","reason":"Recursive-descent parser design; all paths guarded by enterlevel depth limit"},
    {"rule":"MSC04-C","file":"lparser.c","line":2061,"verdict":"FP","confidence":"high","reason":"Recursive-descent parser design; all paths guarded by enterlevel depth limit"},
    {"rule":"API00-C","file":"lparser.c","line":2180,"verdict":"FP","confidence":"high","reason":"Internal entry point; all callers (ldo.c) pass non-NULL guaranteed pointers"},
    {"rule":"API00-C","file":"lparser.c","line":2180,"verdict":"FP","confidence":"high","reason":"Internal entry point; all callers (ldo.c) pass non-NULL guaranteed pointers"},
    {"rule":"API00-C","file":"lparser.c","line":2180,"verdict":"FP","confidence":"high","reason":"Internal entry point; all callers (ldo.c) pass non-NULL guaranteed pointers"},
    {"rule":"API00-C","file":"lparser.c","line":2180,"verdict":"FP","confidence":"high","reason":"Internal entry point; all callers (ldo.c) pass non-NULL guaranteed pointers"},
    {"rule":"API00-C","file":"lparser.c","line":2180,"verdict":"FP","confidence":"high","reason":"Internal entry point; all callers (ldo.c) pass non-NULL guaranteed pointers"},
    {"rule":"API00-C","file":"lparser.c","line":2180,"verdict":"FP","confidence":"high","reason":"Internal entry point; all callers (ldo.c) pass non-NULL guaranteed pointers"},
    {"rule":"DCL13-C","file":"lparser.c","line":2180,"verdict":"FP","confidence":"high","reason":"Internal API pointer; const advisory not adopted by Lua"},
    {"rule":"EXP34-C","file":"lparser.c","line":2188,"verdict":"FP","confidence":"high","reason":"cl from luaF_newLclosure raises on OOM via luaM_*; never returns NULL"},
    {"rule":"MEM31-C","file":"lparser.c","line":2190,"verdict":"FP","confidence":"high","reason":"luaS_new creates GC-managed TString; anchored via luaC_objbarrier; no free needed"},
    {"rule":"DCL30-C","file":"lparser.c","line":2200,"verdict":"FP","confidence":"high","reason":"luaY_parser returns cl heap pointer value; cl is not a local variable address"},
    {"rule":"MEM31-C","file":"lparser.c","line":2200,"verdict":"FP","confidence":"high","reason":"funcstate.f->source is GC-managed; anchored by GC barrier; not raw malloc"}
  ],
  "fns": [],
  "files_reviewed": ["lparser.c"],
  "files_clean": ["lparser.c"],
  "summary": {
    "ground_truth": 0,
    "tp": 0,
    "fp": 112,
    "fn": 0
  }
}