Skip to content

Releases: sahebbiswas/cgull

v0.11.7

Choose a tag to compare

@sahebbiswas sahebbiswas released this 09 Sep 15:43
f7f4a6e

What's Changed

Fixes

  • Fix raw preprocessor diagnostics corrupting CLI output by @sahebbiswas in #410

Other changes

Full Changelog: v0.11.0...v0.11.7

v0.11.0

v0.11.0 Pre-release
Pre-release

Choose a tag to compare

@sahebbiswas sahebbiswas released this 08 Sep 16:53
868a237

What's Changed

Other changes

Read more

Release v0.9.8

Release v0.9.8 Pre-release
Pre-release

Choose a tag to compare

@sahebbiswas sahebbiswas released this 30 Aug 21:01
db80364

What's Changed

  • Make realloc semantics explicit in shared allocation model by @sahebbiswas in #126
  • Fix FormatStringRule (CGULL-002) function list and argument position matching by @sahebbiswas in #128
  • feat: Add CGULL-039 Improper chroot() Jail rule by @sahebbiswas in #127
  • Doc rule limitation and improve strcpy alias size checks by @sahebbiswas in #129
  • Fix AST line number drift under multi-line pcpp macros by @sahebbiswas in #145
  • Fix Tier 2 fallback preprocessor conditional resolution by @sahebbiswas in #146
  • Fix persistent realloc records replay masking double-free and UAF by @sahebbiswas in #156
  • Fix multi-realloc RHS binding and input extraction by @sahebbiswas in #157
  • feat: Add ConfigProfile internal flag-map schema by @sahebbiswas in #158
  • Add ConditionalFlagCollector for preprocessor flag discovery by @sahebbiswas in #159
  • Config-space scanning: baseline + one-at-a-time variant generation by @sahebbiswas in #160
  • Add header (.h) seed file ingestion for config-space scanning by @sahebbiswas in #161
  • Config-space scanning: directory-of-headers auto-discovery by @sahebbiswas in #162
  • Add JSON config profile seed format support by @sahebbiswas in #163
  • Config-space scanning: compile_commands.json ingestion by @sahebbiswas in #164
  • feat: Config-space scanning and condition-tagged findings by @sahebbiswas in #166
  • Config-space scanning: seed macro injection into preprocessor tiers by @sahebbiswas in #167
  • Add pairwise and bounded-exhaustive config-space expansion strategies by @sahebbiswas in #168
  • Surface reachable_under in report output across JSON, SARIF, Markdown, and Terminal text formats by @sahebbiswas in #169
  • Config-space scanning: seed source precedence and validation diagnostics by @sahebbiswas in #170
  • Translation-unit mode: include-path resolution and config by @sahebbiswas in #171
  • Fix multi-line statement line drift for CFG dereference findings by @sahebbiswas in #176
  • Detect unused local variables (CGULL-041) and support block scoping by @sahebbiswas in #183
  • Add CGULL-042 DeadStoresRule for dead store detection by @sahebbiswas in #184
  • Detect variable shadowing across nested scopes (MISRA C:2012 Rule 5.3) by @sahebbiswas in #185
  • Implement struct/union field-size table (F1) and bump version to 0.9.0 by @sahebbiswas in #186
  • Implement expression-to-struct-type resolution (F2) by @sahebbiswas in #187
  • Extend CGULL-007 (array index bounds) to struct members by @sahebbiswas in #188
  • Extend strcpy destination size resolution to struct members by @sahebbiswas in #189
  • Add CGULL-044 size-aware memcpy/memmove/memset struct-member and array overflow rule by @sahebbiswas in #190
  • Add cross-cutting variant regression matrix test suite (F6) by @sahebbiswas in #191
  • Add structured trace logging to support triage of hangs and scan failures by @sahebbiswas in #194
  • Fix AttributeError in CGULL-040 for compound assignments by @sahebbiswas in #195
  • Translation-unit mode: recursive #include expansion with cycle/guard detection by @sahebbiswas in #196
  • Add tests for TU cross-file line provenance tracking by @sahebbiswas in #197
  • TU Mode provenance mapping for AST parser and CFG builder by @sahebbiswas in #198
  • feat(rules): Add MissingInclusionGuardRule (CGULL-045) by @sahebbiswas in #199
  • Add PointerSubtractionSizeRule (CGULL-046) for CWE-469 by @sahebbiswas in #200
  • feat(engine): deduplicate header findings across translation units with --no-dedup-headers flag by @sahebbiswas in #201
  • UnsafeSensitiveMemoryClearingRule.scan_line generated malformed auto_fix_replacement strings by @sahebbiswas in #209
  • Establish NIST Juliet benchmark for C-GULL by @sahebbiswas in #210
  • Use extract_balanced_parens for regex extractions feeding fix replacements by @sahebbiswas in #211
  • Refactor oversized rule modules into per-category subpackages by @sahebbiswas in #212
  • Remove stale flake8 dependency from dev extras by @sahebbiswas in #213
  • Enhance extract_balanced_parens and argument splitting by @sahebbiswas in #214

Full Changelog: rel-v-0-8-28...rel-v-0-9-8

Release v0.8.28

Release v0.8.28 Pre-release
Pre-release

Choose a tag to compare

@sahebbiswas sahebbiswas released this 23 Aug 03:07
8abd3ab

What's Changed

  • Add CGULL-027 (Double Free) Rule by @sahebbiswas in #38
  • Restrict unsafe autofix suggestions and add FixType metadata by @sahebbiswas in #39
  • Expose Parser/Analysis Status and Scan Completeness by @sahebbiswas in #57
  • Fix CGULL-024 hardcoded-secret regex to match sized array declarations by @sahebbiswas in #58
  • Fix CGULL-002 FormatStringRule scanning raw line_content by @sahebbiswas in #59
  • Make parallel and sequential scans semantically identical by @sahebbiswas in #60
  • Make Severity Filtering Consistent Across Findings and Summaries by @sahebbiswas in #61
  • Report scan errors explicitly instead of silently skipping failed files by @sahebbiswas in #62
  • Add NoInsecureRandRule (CGULL-028) for insecure PRNG detection by @sahebbiswas in #63
  • Prune ignored directory trees in os.walk when no negation matches by @sahebbiswas in #64
  • Fix CGULL-007 false positives on initialized array declarations by @sahebbiswas in #69
  • Add SizeofOnPointerRule (CGULL-029) by @sahebbiswas in #70
  • Fix CGULL-007 variable-index array bounds checking by @sahebbiswas in #71
  • Handle KeyboardInterrupt gracefully instead of printing a raw Python traceback by @sahebbiswas in #74
  • Fix CGULL-013 false positive on preprocessor-split conditions by @sahebbiswas in #75
  • feat(rules): Add CommandInjectionRule (CGULL-030) to detect system/popen vulnerabilities by @sahebbiswas in #76
  • Add TOML Project Configuration File Support and Inline Suppressions by @sahebbiswas in #77
  • Expand CGULL-030 Command Injection rule to detect PATH-searching exec variants by @sahebbiswas in #78
  • Enforce Meaningful Test Coverage in CI by @sahebbiswas in #79
  • Establish Stable Versioning and Output Schema Versioning by @sahebbiswas in #80
  • Expose -j/--jobs CLI option and validate jobs count by @sahebbiswas in #81
  • Add regression test for parallel worker crash handling by @sahebbiswas in #82
  • Fix SARIF fullDescription to use static rule description by @sahebbiswas in #83
  • Add Weak/Broken Cryptographic Primitives rule (CGULL-031) by @sahebbiswas in #84
  • Downgrade strcpy() finding severity when source literal is provably bounded by @sahebbiswas in #85
  • feat: add rule CGULL-033 for signed/unsigned comparison and loop bound mismatch by @sahebbiswas in #86
  • Verify existing Double-Free rule (CGULL-027) by @sahebbiswas in #87
  • Fix CGULL-013 false positives on preprocessor-split conditions with repeated keywords by @sahebbiswas in #90
  • Fix CGULL-007 false positive on standard unsigned typedefs by @sahebbiswas in #91
  • Add CGULL-034 Division or Modulo by Zero rule by @sahebbiswas in #92
  • Add CGULL-032 Realloc-Overwrite Memory Leak Rule by @sahebbiswas in #93
  • Add TOCTOU File Access Rule (CGULL-035) by @sahebbiswas in #94
  • feat: Add detection for insecure temporary file functions (mktemp/tmpnam/tempnam) by @sahebbiswas in #95
  • Add ruleset drift warning and stamp rules_applied_count in baseline mode by @sahebbiswas in #96
  • Add --fail-on threshold flag to CLI by @sahebbiswas in #97
  • Log exception summary to stderr on rule/worker failures by @sahebbiswas in #98
  • Surface per-file AST parse tier and add --warn-on-fallback option by @sahebbiswas in #99
  • Fix CGULL-006 to detect general CWE-190 integer overflow by @sahebbiswas in #106
  • Fix ArrayIndexOutOfBoundsRule declared size resolution through pointer aliasing by @sahebbiswas in #107
  • Fix NULL pointer dereference detection for direct assignments and inverted checks by @sahebbiswas in #108
  • docs: update CLI help and README rules by @sahebbiswas in #116
  • Model goto and labeled control flow in the CFG by @sahebbiswas in #117
  • Preserve allocation state across control-flow joins by @sahebbiswas in #118
  • Add general CWE-401 Memory Leak rule (CGULL-036) by @sahebbiswas in #120
  • Add CWE-170 strncpy null-termination detection by @sahebbiswas in #119
  • feat: add ReturnStackVariable rule to detect escaping local addresses (CGULL-038) by @sahebbiswas in #122
  • Add alias-aware lifetime tracking for UAF and double-free by @sahebbiswas in #123
  • Add intra-file interprocedural memory effect summaries by @sahebbiswas in #124
  • Add CFG/data-flow coverage for conditional expressions and short-circuit logic by @sahebbiswas in #125

Full Changelog: rel-v-0-6-0...rel-v-0-8-28

Release v0.6.0

Release v0.6.0 Pre-release
Pre-release

Choose a tag to compare

@sahebbiswas sahebbiswas released this 18 Aug 04:01

C-GULL 0.6.0 Release Notes

Welcome to the initial public release of C-GULL (Code Guardian for Unchecked Logic & Leaks)!

C-GULL is a lightweight, modular C source code static security analyzer designed to identify common memory vulnerabilities, buffer overflows, format string flaws, timing side-channel patterns, and MISRA-C compliance guidelines.

πŸš€ Key Features in Initial Release

  • ⚑ Dual Analysis Engine:
    • Lightweight Regex Pattern Matching: Fast first-pass scanning for banned API calls, format strings, and unsafe casts.
    • AST & CFG-Assisted Structural Analysis: Structural and control-flow aware pattern checks for unchecked malloc returns, missing pointer NULL checks, and use-after-free, powered by pycparser and pcpp.
  • πŸ›‘οΈ 25 Security Audit Rules: Comprehensive rule coverage spanning memory safety, cryptography, control flow, arithmetic, and code quality.
  • πŸ”‡ Inline Suppression: Silence specific findings using inline comments (e.g., // cgull-ignore: CGULL-001).
  • βš™οΈ Parallel Scanning: Multi-core scanning support for large codebases (-j/--jobs).
  • πŸ“ Baseline / Diff Mode: CI enforcement for "no new issues" on an existing codebase (--baseline and --update-baseline).
  • πŸ“Š Multi-Format Reporting: JSON, SARIF 2.1.0, Markdown, and colored terminal outputs.
  • 🚫 .cgullignore Support: Easily exclude vendor libraries, third-party dependencies, or test mock files using gitignore glob patterns.
  • 🧩 Extensible Architecture: Easily add custom regex or AST rules using the object-oriented Python class interface.

πŸ“¦ Installation

pip install cgull
# For best AST analysis:
pip install "cgull[ast]"

Check out the README for full documentation, CLI usage, and extension examples!

What's Changed

  • Expand CI platform and Python version coverage by @sahebbiswas in #18
  • Align Package Metadata With Project Maturity by @sahebbiswas in #19
  • Fix .cgullignore negation and directory traversal semantics by @sahebbiswas in #20
  • Make pycparser AST the Authoritative Structural Representation by @sahebbiswas in #21
  • Use AST and Type Semantics as Primary Signals for Rules CGULL-005, 008, 009, 011 by @sahebbiswas in #22
  • Rewrite Memory-Safety Rules Around Dataflow Facts by @sahebbiswas in #24
  • Build Security Rule Behavioral Corpus for C-GULL by @sahebbiswas in #25
  • Validate SARIF Output Against the SARIF Schema by @sahebbiswas in #26
  • Add rule CGULL-026 for unchecked snprintf() return values by @sahebbiswas in #27
  • Introduce CFG and Basic Dataflow Analysis by @sahebbiswas in #28
  • Harden C Parsing and Fallback Behavior by @sahebbiswas in #30
  • Improve Sensitive-Comparison and Secret-Handling Precision by @sahebbiswas in #31
  • Fix Naked Control Flow false positives on preprocessor directives & multiline conditions by @sahebbiswas in #35
  • Fix AttributeError when parsing variadic function parameters (EllipsisParam) by @sahebbiswas in #36
  • Add CLI progress indicator during codebase scanning by @sahebbiswas in #37

Full Changelog: https://github.com/sahebbiswas/cgull/commits/rel-v-0-6-0