88 lines
2.4 KiB
Markdown
88 lines
2.4 KiB
Markdown
# OCR 위험 구간 상세 분석
|
|
|
|
## 위험 분류 기준
|
|
|
|
- **높음**: 수동 리뷰 필수, 자동 전환 불가
|
|
- **중간**: 샘플 검증 후 전환 가능
|
|
- **낮음**: 자동 전환 권장
|
|
|
|
## 위험 구간 목록
|
|
|
|
### 높음 위험 (4개)
|
|
|
|
#### 1. api_parser.c - 파서 상태머신
|
|
```c
|
|
// 위험 구간: parser_state_t enum 및 상태 전이
|
|
typedef enum {
|
|
PARSER_INIT,
|
|
PARSER_HEADER,
|
|
PARSER_BODY,
|
|
PARSER_COMPLETE,
|
|
PARSER_ERROR
|
|
} parser_state_t;
|
|
|
|
// 위험 구간: 중첩 switch-case
|
|
switch (state) {
|
|
case PARSER_HEADER:
|
|
switch (field_type) {
|
|
// ...
|
|
}
|
|
}
|
|
```
|
|
|
|
#### 2. db_migrator.c - 스키마 diff 로직
|
|
```c
|
|
// 위험 구간: 테이블 비교 알고리즘
|
|
int compare_columns(column_t* a, column_t* b) {
|
|
// 복잡한 비교 로직
|
|
}
|
|
```
|
|
|
|
#### 3. net_protocol.c - 프로토콜 상태머신
|
|
```c
|
|
// 위험 구간: 바이너리 프로토콜 파싱
|
|
switch (packet_type) {
|
|
case PKT_HANDSHAKE:
|
|
// ...
|
|
case PKT_DATA:
|
|
// ...
|
|
}
|
|
```
|
|
|
|
#### 4. utils_string.c - 인코딩 변환
|
|
```c
|
|
// 위험 구간: 멀티바이트 문자 처리
|
|
size_t convert_encoding(char* out, const char* in, enc_t from, enc_t to) {
|
|
// EUC-KR, UTF-8, ISO-2022-KR 변환
|
|
}
|
|
```
|
|
|
|
### 중간 위험 (6개)
|
|
|
|
| 파일 | 구간 | 위험 이유 |
|
|
|------|------|-----------|
|
|
| api_handler.c | 콜백 레지스트리 | 함수 포인터 배열 초기화 |
|
|
| api_router.c | 동적 라우트 테이블 | 해시맵 구현체 |
|
|
| db_query.c | 트랜잭션 처리 | 에러 코드 매핑 |
|
|
| net_client.c | SSL 핸드셰이크 | OpenSSL 콜백 |
|
|
| crypto_cipher.c | 키 관리 | 키 파생 함수 |
|
|
| utils_config.c | 설정 파싱 | 토큰 파싱 로직 |
|
|
|
|
### 낮음 위험 (8개)
|
|
|
|
| 파일 | 구간 | 비고 |
|
|
|------|------|------|
|
|
| api_validator.c | 스키마 검증 | 단순 검증 로직 |
|
|
| db_connector.c | 연결 풀 관리 | 표준 인터페이스 |
|
|
| net_server.c | 소켓 옵션 | 표준 소켓 API |
|
|
| net_buffer.c | 메모리 풀 | 단순 할당 래퍼 |
|
|
| crypto_hash.c | HMAC 처리 | 표준 OpenSSL |
|
|
| crypto_random.c | 엔트로피 소스 | 단순 래퍼 |
|
|
| utils_logger.c | 로그 로테이션 | 표준 파일 I/O |
|
|
| utils_timer.c | 타이머 큐 | 단순链表 |
|
|
|
|
## OCR 리스크 완화 전략
|
|
|
|
1. **높음 위험**: 전문 리뷰어 수동 검토, 테스트 케이스 보강
|
|
2. **중간 위험**: 샘플 입력으로 검증, 커버리지 테스트 작성
|
|
3. **낮음 위험**: 자동 전환 후 기본 테스트만 수행
|