Skip to content

fix(longbridge-tools): validate calendar event args before exec - #11

Merged
kbkb628 merged 1 commit into
helsome:mainfrom
kbkb628:fix/calendar-args-validation
Sep 11, 2026
Merged

fix(longbridge-tools): validate calendar event args before exec#11
kbkb628 merged 1 commit into
helsome:mainfrom
kbkb628:fix/calendar-args-validation

Conversation

@kbkb628

@kbkb628 kbkb628 commented Sep 8, 2026

Copy link
Copy Markdown
Collaborator

问题

getCalendarEvents 是唯一一个把用户提供的符号直接塞进 LongBridge CLI argv、而没有走仓库统一符号校验的工具(CLAUDE.md 关键规则:exec 前必须用 /^[A-Z0-9]{1,5}\.(US|HK|SG|SH|SZ|HAS)$/ 校验)。同时 start / end / count 也未经校验直接转发——像 "--symbol" 这样的值会被 CLI 误读为参数标志。

改动

  • packages/longbridge-tools/src/tools/calendar.ts
    • 每个 symbol 用 validateSymbolOrThrow 校验(INVALID_SYMBOL),与其他工具一致
    • start / end 必须是 YYYY-MM-DD 格式
    • count 必须是正整数
    • 新错误码 INVALID_ARGUMENT(errors.ts 中扩展 ErrorCode union)
  • 校验全部发生在构建 argv 之前,失败时不会调用 CLI

验证

getCalendarEvents was the only tool that passed user-supplied symbols
straight into the LongBridge CLI argv without the repo-wide symbol check
(CLAUDE.md: validate with /^[A-Z0-9]{1,5}\.(US|HK|SG|SH|SZ|HAS)$/ before
exec). It also forwarded unvalidated start/end/count strings, so values
like "--symbol" could be misread as CLI flags.

- validate every symbol with validateSymbolOrThrow (INVALID_SYMBOL)
- require YYYY-MM-DD for start/end (new INVALID_ARGUMENT code)
- require a positive integer for count
- add regression tests for all three rejections
@kbkb628
kbkb628 force-pushed the fix/calendar-args-validation branch from a6ba4e9 to abb6a0a Compare September 11, 2026 07:28
@kbkb628
kbkb628 merged commit 74bedbf into helsome:main Sep 11, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant