Security Code Review
Systematic checklist for reviewing C code for security vulnerabilities.
Review Checklist
Memory:
- [ ] All array accesses bounds-checked
- [ ] Integer overflow checked before allocation/indexing
- [ ] No use-after-free potential
- [ ] Strings null-terminated after operations
Input:
- [ ] All external input validated at trust boundary
- [ ] Path inputs canonicalized and checked
- [ ] No user data in format strings
- [ ] Lengths validated before use
Functions:
- [ ] No banned functions (strcpy, sprintf, gets, etc.)
- [ ] Buffer sizes passed to all string operations
- [ ] Return values checked
Secrets:
- [ ] No credentials in logs or error messages
- [ ] Config file permissions verified
- [ ] Secrets scrubbed from memory when done
Files:
- [ ] No TOCTOU races (access then open)
- [ ] Symlinks handled safely (O_NOFOLLOW)
- [ ] Temp files use mkstemp
Grep for red flags:
grep -rn 'strcpy\|sprintf\|gets\|strcat\|mktemp' src/
grep -rn 'printf.*%s.*user\|system(\|popen(' src/