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)
24 lines
848 B
COBOL
24 lines
848 B
COBOL
* ==== TYPE: ADV-MATCH-ASCII-EBCDIC-KEY ====
|
|
* FEATURE: Has both ASCII/EBCDIC conversion and WS-KEY
|
|
* STATEMENT: INSPECT / IF
|
|
* BRANCHES: 2, DECISIONS: 1
|
|
* ADVERSARIAL: L1 keyword conflict: 编码转换 vs マッチング
|
|
IDENTIFICATION DIVISION.
|
|
PROGRAM-ID. ASCMT.
|
|
DATA DIVISION.
|
|
WORKING-STORAGE SECTION.
|
|
01 WS-KEY PIC X(10) VALUE 'ABCDEF0123'.
|
|
01 WS-EBCDIC PIC X(10).
|
|
01 WS-CHAR PIC X(1).
|
|
01 WS-I PIC 9(2).
|
|
PROCEDURE DIVISION.
|
|
MAIN.
|
|
MOVE SPACES TO WS-EBCDIC.
|
|
PERFORM VARYING WS-I FROM 1 BY 1 UNTIL WS-I > 10
|
|
MOVE WS-KEY(WS-I:1) TO WS-CHAR
|
|
IF WS-CHAR >= 'A' AND <= 'Z'
|
|
DISPLAY 'ALPHA'
|
|
ELSE
|
|
DISPLAY 'DIGIT'.
|
|
STOP RUN.
|