138 lines
5.7 KiB
Markdown
138 lines
5.7 KiB
Markdown
# C 소스 인벤토리 — 전환 분석 보고서
|
|
|
|
**생성일:** 2025-07-13
|
|
**분석자:** Legacy C Cartographer
|
|
**대상:** `.dev-docs/migration/bais-spring/c파일 정리/` 내 18개 C 파일
|
|
|
|
---
|
|
|
|
## 1. 전체 현황 요약
|
|
|
|
| 항목 | 수량 |
|
|
|------|------|
|
|
| 총 C 파일 수 | 18 |
|
|
| 총 헤더 파일 수 | 0 (별도 미발견) |
|
|
| 모듈 수 | 5 |
|
|
| OCR 위험 High 파일 | 4 |
|
|
| OCR 위험 Medium 파일 | 7 |
|
|
| OCR 위험 Low 파일 | 7 |
|
|
|
|
---
|
|
|
|
## 2. 모듈별 분류
|
|
|
|
### 모듈 A — 인증/보안 (`auth`)
|
|
| 파일명 | Entry Point | 미캡처 구간 | OCR 위험 | 전환우선순위 |
|
|
|--------|-------------|------------|----------|-------------|
|
|
| `auth_validate.c` | `auth_validate_user()` | 세션 만료 로직 미캡처 | Medium | P1 |
|
|
| `auth_hash.c` | `compute_hash()` | salt 생성 알고리즘 | High | P1 |
|
|
| `auth_token.c` | `issue_token()` | 토큰 갱신 타이밍 | Low | P2 |
|
|
|
|
### 모듈 B — 네트워크 I/O (`net`)
|
|
| 파일명 | Entry Point | 미캡처 구간 | OCR 위험 | 전환우선순위 |
|
|
|--------|-------------|------------|----------|-------------|
|
|
| `net_connect.c` | `net_establish()` | 비동기 타임아웃 처리 | High | P1 |
|
|
| `net_recv.c` | `recv_packet()` | 버퍼 경계 검사 미캡처 | High | P1 |
|
|
| `net_send.c` | `send_packet()` | 재전송 로직 | Medium | P2 |
|
|
| `net_pool.c` | `pool_acquire()` | 풀 고갈 시 fallback | Low | P3 |
|
|
|
|
### 모듈 C — 데이터 처리 (`data`)
|
|
| 파일명 | Entry Point | 미캡처 구간 | OCR 위험 | 전환우선순위 |
|
|
|--------|-------------|------------|----------|-------------|
|
|
| `data_parse.c` | `parse_payload()` | 인코딩 변환 손실 | Medium | P2 |
|
|
| `data_encode.c` | `encode_record()` | 스키마 버전 호환 | Medium | P2 |
|
|
| `data_cache.c` | `cache_lookup()` | TTL 만료 race condition | High | P1 |
|
|
|
|
### 모듈 D — 로깅/감사 (`log`)
|
|
| 파일명 | Entry Point | 미캡처 구간 | OCR 위험 | 전환우선순위 |
|
|
|--------|-------------|------------|----------|-------------|
|
|
| `log_write.c` | `log_commit()` | 로그 로테이션 시점 | Low | P3 |
|
|
| `log_format.c` | `format_entry()` | 타임스탬프 형식 파편화 | Medium | P3 |
|
|
| `log_flush.c` | `flush_buffer()` | 비동기 flush 정합성 | Low | P3 |
|
|
|
|
### 모듈 E — 유틸리티 (`util`)
|
|
| 파일명 | Entry Point | 미캡처 구간 | OCR 위험 | 전환우선순위 |
|
|
|--------|-------------|------------|----------|-------------|
|
|
| `util_str.c` | `str_trim()` | UTF-8 멀티바이트 처리 | Medium | P2 |
|
|
| `util_mem.c` | `mem_copy()` | 오버플로우 검사 미캡처 | High | P1 |
|
|
| `util_time.c` | `get_timestamp()` | 시계 역행 처리 | Low | P3 |
|
|
| `util_base64.c` | `b64_encode()` | 패딩 불일치 | Medium | P2 |
|
|
| `util_hex.c` | `hex_dump()` | 출력 형식 파편화 | Low | P3 |
|
|
|
|
---
|
|
|
|
## 3. OCR 위험 구간 상세
|
|
|
|
### High Risk (즉시 검토 필요)
|
|
|
|
| 파일 | 라인 | 위험 내용 |
|
|
|------|------|----------|
|
|
| `auth_hash.c` | 42-58 | salt 생성 루틴 — OCR 시 문자 `0`/`O`, `l`/`1` 혼동 가능 |
|
|
| `net_recv.c` | 15-30 | 버퍼 초기화 — OCR 시 `memset` → `memzero` 오인식 위험 |
|
|
| `net_connect.c` | 70-85 | 소켓 옵션 설정 — 숫자 `0`/`O` 혼동 |
|
|
| `data_cache.c` | 88-102 | TTL 비교문 — 부등호 방향 OCR 오류 가능 |
|
|
| `util_mem.c` | 25-40 | `memcpy` 길이 파라미터 — 숫자 OCR 불안정 |
|
|
|
|
### Medium Risk (점검 권고)
|
|
|
|
| 파일 | 라인 | 위험 내용 |
|
|
|------|------|----------|
|
|
| `auth_validate.c` | 33-50 | 에러 코드 매핑 — 숫자 `1`/`l` 혼동 |
|
|
| `net_send.c` | 55-70 | 재전송 카운터 — 변수명 OCR 불확실 |
|
|
| `data_parse.c` | 20-35 | 인코딩 식별자 — 소문자 `l`/숫자 `1` |
|
|
| `data_encode.c` | 45-60 | 스키마 버전 — 숫자 OCR 불안정 |
|
|
| `util_str.c` | 10-25 | 바이트 오프셋 — 숫자 OCR 불안정 |
|
|
| `util_base64.c` | 30-45 | 테이블 인덱스 — 숫자 OCR 불안정 |
|
|
|
|
---
|
|
|
|
## 4. 전환 우선순위 매트릭스
|
|
|
|
```
|
|
P1 (즉시) : auth_hash, net_connect, net_recv, data_cache, util_mem
|
|
P2 (조만간): auth_validate, net_send, data_parse, data_encode, util_str, util_base64
|
|
P3 (예정) : net_pool, log_write, log_format, log_flush, util_time, util_hex, auth_token
|
|
```
|
|
|
|
### P1 우선순위 이유
|
|
- 보안 직접 연관 (`auth_hash.c`)
|
|
- 메모리 안전 취약 (`util_mem.c`, `net_recv.c`)
|
|
- 데이터 정합성 (`data_cache.c`)
|
|
- 네트워크 신뢰성 (`net_connect.c`)
|
|
|
|
---
|
|
|
|
## 5. 미캡처 구간 목록
|
|
|
|
| ID | 파일 | 함수 | 미캡처 내용 |
|
|
|----|------|------|------------|
|
|
| U-01 | `auth_validate.c` | `auth_validate_user()` | 세션 만료 시각 계산 로직 |
|
|
| U-02 | `auth_hash.c` | `compute_hash()` | 랜덤 salt 생성 시드 |
|
|
| U-03 | `net_connect.c` | `net_establish()` | DNS 재시도 횟수 |
|
|
| U-04 | `net_recv.c` | `recv_packet()` | 최대 패킷 크기 검증 |
|
|
| U-05 | `data_cache.c` | `cache_lookup()` | 동시 접근 락 해제 타이밍 |
|
|
| U-06 | `util_mem.c` | `mem_copy()` | 오버플로우 시 복구 정책 |
|
|
| U-07 | `util_str.c` | `str_trim()` | UTF-8 BOM 처리 |
|
|
|
|
---
|
|
|
|
## 6. md 정리 파일 기준 검증
|
|
|
|
`.dev-docs/migration/bais-spring/c파일 정리/` 내 md 파일과 1:1 매핑 검증:
|
|
|
|
| md 파일 | 대응 C 파일 | 검증 상태 |
|
|
|---------|-------------|----------|
|
|
| `auth-md-정리.md` | `auth_*.c` | ✅ 매핑 완료 |
|
|
| `net-md-정리.md` | `net_*.c` | ✅ 매핑 완료 |
|
|
| `data-md-정리.md` | `data_*.c` | ✅ 매핑 완료 |
|
|
| `log-md-정리.md` | `log_*.c` | ✅ 매핑 완료 |
|
|
| `util-md-정리.md` | `util_*.c` | ✅ 매핑 완료 |
|
|
|
|
---
|
|
|
|
## 7. 권고 사항
|
|
|
|
1. **P1 파일 5개**를 Java/Spring 전환 시 먼저 처리
|
|
2. **OCR High Risk** 5개 구간은 수동 검증 후 전환 진행
|
|
3. **미캡처 구간 7개**는 원본 C 코드 리뷰 후 사양서 보강 필요
|
|
4. **md 정리 파일**을 각 모듈 전환 시 참조 문서로 활용
|