4b22c3754e
COBOL 专家对抗性审查发现: - 老式 COBOL 的 WSKEY1/WSKEY2(无连字符)未被 L1 关键词检测 - 结构性检测信号 4 和 5 覆盖不全 修复: - L1 增加 re:WS[A-Z0-9]*KEY[A-Z0-9]* 覆盖无连字符 KEY 命名 - _matches_key_comparison 扩展支持无连字符变量 - has_key_var 注入扩展支持无连字符 - 结构性检测信号 4 增加 WS\w+ 比较模式 - 结构性检测信号 5 增加两个单独 OPEN 的支持 新测试: - test_cobol_expert_attacks — 4 个内联攻击测试 (跨行AT END, 无连字符WSKEY, GO TO风格, NOT=比较) - test-adversarial: 8 个样本文件攻击测试 全回归: 767 passed (+3 new, 0 failures)
45 lines
1.5 KiB
COBOL
45 lines
1.5 KiB
COBOL
* ==== TYPE: ADV-MATCH-10FILES ====
|
|
* FEATURE: 10 files, only 2 with key comparison
|
|
* STATEMENT: IF / OPEN / READ
|
|
* BRANCHES: 2, DECISIONS: 1
|
|
* ADVERSARIAL: Multi-file program that's NOT matching
|
|
IDENTIFICATION DIVISION.
|
|
PROGRAM-ID. TENFL.
|
|
ENVIRONMENT DIVISION.
|
|
INPUT-OUTPUT SECTION.
|
|
FILE-CONTROL.
|
|
SELECT F1 ASSIGN TO 'F1.DAT'.
|
|
SELECT F2 ASSIGN TO 'F2.DAT'.
|
|
SELECT F3 ASSIGN TO 'F3.DAT'.
|
|
SELECT F4 ASSIGN TO 'F4.DAT'.
|
|
SELECT F5 ASSIGN TO 'F5.DAT'.
|
|
SELECT F6 ASSIGN TO 'F6.DAT'.
|
|
SELECT F7 ASSIGN TO 'F7.DAT'.
|
|
SELECT F8 ASSIGN TO 'F8.DAT'.
|
|
SELECT F9 ASSIGN TO 'F9.DAT'.
|
|
SELECT F10 ASSIGN TO 'F10.DAT'.
|
|
DATA DIVISION.
|
|
FILE SECTION.
|
|
FD F1. 01 R1 PIC X(80).
|
|
FD F2. 01 R2 PIC X(80).
|
|
FD F3. 01 R3 PIC X(80).
|
|
FD F4. 01 R4 PIC X(80).
|
|
FD F5. 01 R5 PIC X(80).
|
|
FD F6. 01 R6 PIC X(80).
|
|
FD F7. 01 R7 PIC X(80).
|
|
FD F8. 01 R8 PIC X(80).
|
|
FD F9. 01 R9 PIC X(80).
|
|
FD F10. 01 R10 PIC X(80).
|
|
WORKING-STORAGE SECTION.
|
|
01 WS-KEY PIC X(10).
|
|
01 WS-COUNT PIC 9(5) VALUE 0.
|
|
PROCEDURE DIVISION.
|
|
MAIN.
|
|
OPEN INPUT F1 F2 F3 F4 F5 F6 F7 F8 F9 F10.
|
|
READ F1 INTO R1 AT END MOVE 'Y' TO WS-EOF.
|
|
ADD 1 TO WS-COUNT.
|
|
IF WS-COUNT > 0
|
|
DISPLAY 'OK'.
|
|
CLOSE F1 F2 F3 F4 F5 F6 F7 F8 F9 F10.
|
|
STOP RUN.
|