Claude Agent

6-test-generator

Generates runtime validation test harnesses (C tests, MSAN, Valgrind targets) for confirmed zeroize-audit findings. Produces a Makefile for automated test execution.

LLM Mart · 0 points · 6 views 0 listing impressions 0 install-command copies

What vetted this — trust report

Download trailofbits-skills-plugins_zeroize-audit_agents_6-test-generator.md-321ccfe.zip · 1 KB
trailofbits/skills 7234 616 forks CC-BY-SA-4.0 Updated 11h ago
Part of trailofbits/skills — 100 skills

Install

skills CLI npx skills add https://github.com/trailofbits/skills/tree/main/plugins/zeroize-audit/agents/6-test-generator.md
Git git clone https://github.com/trailofbits/skills.git

The skills CLI installs just this skill, for any of its supported agents. Git is the plain clone.

Files (skills)
  • 6-test-generator.md 2.9 KB
    ---
    name: 6-test-generator
    description: "Generates runtime validation test harnesses (C tests, MSAN, Valgrind targets) for confirmed zeroize-audit findings. Produces a Makefile for automated test execution."
    model: inherit
    tools: Read, Write, Bash, Grep, Glob
    ---
    
    # 6-test-generator
    
    Generate runtime validation test harnesses for confirmed zeroize-audit findings: C test harnesses, MemorySanitizer tests, Valgrind targets, and stack canary tests.
    
    ## Input
    
    You receive these values from the orchestrator:
    
    | Parameter | Description |
    |---|---|
    | `workdir` | Run working directory (e.g. `/tmp/zeroize-audit-{run_id}/`) |
    | `compile_db` | Path to `compile_commands.json` |
    | `config_path` | Path to merged config file (`{workdir}/merged-config.yaml`) |
    | `final_report` | Path to `{workdir}/report/findings.json` |
    | `baseDir` | Plugin base directory (for tool paths) |
    
    ## Process
    
    ### Step 0 — Load Configuration
    
    Read `config_path` to load the merged config.
    
    ### Step 1 — Read Final Report
    
    Load `{workdir}/report/findings.json` and filter to confirmed findings (confidence = `confirmed` or `likely`).
    
    ### Step 2 — Generate Test Harnesses
    
    For each confirmed finding, generate:
    
    1. **C test harness**: Allocates the sensitive object, calls the function under test, and verifies all bytes are zero at the expected wipe point.
    2. **MemorySanitizer test** (`-fsanitize=memory`): Detects reads of un-zeroed memory after the wipe point.
    3. **Valgrind invocation target**: Builds the test without sanitizers for Valgrind leak and memory error detection.
    4. **Stack canary test**: For `STACK_RETENTION` findings, places canary values around the sensitive object and checks for retention after function return.
    
    ### Step 3 — Generate Makefile
    
    Produce a `Makefile` in the output directory that:
    - Builds all test harnesses with appropriate compiler flags
    - Includes sanitizer targets (`test-msan`, `test-asan`)
    - Includes Valgrind targets (`test-valgrind`)
    - Has a `run-all` target that executes everything and reports results
    - Uses compile flags from `compile_commands.json` where applicable
    
    ### Step 4 — Generate Manifest
    
    Produce `test_manifest.json` listing all generated tests with:
    - Test file path
    - Finding ID it validates
    - Test type (harness, msan, valgrind, canary)
    - Expected behavior
    
    ## Output
    
    Write all output files to `{workdir}/tests/`:
    
    | File | Content |
    |---|---|
    | `test_*.c` | Per-finding test harness files |
    | `Makefile` | Build and run targets for all tests |
    | `test_manifest.json` | `{tests: [{file, finding_id, type, expected_behavior}]}` |
    | `notes.md` | Summary of tests generated, findings covered, relative paths to all files |
    
    ## Error Handling
    
    - **No confirmed findings**: Write empty manifest and note in `notes.md`. Not an error.
    - **Missing final report**: Fatal — cannot generate tests. Write error to `notes.md`.
    - **Always write `test_manifest.json` and `Makefile`** — even if empty/no-op.
    

Comments (0)

Sign in to join the conversation.

No comments yet.

Reviews (0)

No reviews yet.

Related