forked from vejeta/conquer
-
Notifications
You must be signed in to change notification settings - Fork 0
Closed
Description
Bug Type
PHASE-4.9-COMPLETION - Level 9+ warning elimination incomplete
Severity
Medium - Blocks full CMake compilation with Phase 4 warning compliance
Phase Discovered
Phase 5.2: Dual Compilation System - file missing higher-level Phase 4 completion
Files Affected
io.c(line references: 721, 1501)
Description
The io.c file was reported as "100% warning-free" in Phase 4 reports, but produces warnings/errors with CMake's Level 9+ warning flags. Investigation reveals Phase 4 testing only covered Level 8 warnings, while CMake correctly applies the complete Phase 4 warning set including static analysis.
Code Location
io.c:721 - Format string mismatch in readdata() function
io.c:1501 - Memory allocation size issues in m2alloc() function
Compilation Warnings
io.c:721:34: warning: format '%d' expects argument of type 'int', but argument 3 has type 'long unsigned int' [-Wformat=]
721 | fprintf(stderr,"reading %d bytes of world data\n",sizeof(struct s_world));
| ~^ ~~~~~~~~~~~~~~~~~~~~~~
| | |
| int long unsigned int
| %ld
io.c:1501:17: warning: allocated buffer size is not a multiple of the pointee's size [CWE-131] [-Wanalyzer-allocation-size]
1501 | malloc( (size_t)nrows*(sizeof(char *)+(size_t)entrysize));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Impact Assessment
- Prevents clean CMake compilation of dual compilation system
- Format string vulnerability in error reporting
- Potential memory allocation issues flagged by static analysis
- Blocks Phase 5 (Modern Build System) completion
Recommended Resolution
- Fix format string mismatch: Use
%zuforsizeof()results or cast toint - Review memory allocation pattern in
m2alloc()function - Address static analyzer warnings about buffer size calculations
- Test with full Level 9+ warning flags:
-Wold-style-declaration -Wshadow -Wmissing-prototypes -Wcast-qual -fanalyzer - Update Phase 4 completion status to reflect actual warning level achieved
Testing Command
gcc -DCONQUER -D_POSIX_C_SOURCE=200809L -std=c2x -Wall -Wextra -Wpedantic -Wformat=2 -Wconversion -Wsign-conversion -Wimplicit-fallthrough -Wstrict-prototypes -Wold-style-declaration -Wold-style-definition -Wshadow -Wmissing-prototypes -Wcast-qual -fanalyzer -c io.cSecurity Considerations
- CWE-131: Potential buffer allocation size issues
- Format string safety: Mismatch between format specifier and argument type
Session History
- Phase 4: Claimed completion at Level 8 warnings
- Phase 5.2: Discovered warnings at Level 9+ during CMake testing
- Investigation: Confirmed discrepancy between test_warnings.sh (Level 8) and CMake (Level 9+)
Labels
phase-4-completion, warning-elimination, security, build-system-blocker, medium-priority
Metadata
Metadata
Assignees
Labels
No labels