Skip to content

fix(common): 修复日期解析 int 溢出问题 - #4125

Open
liyong473 wants to merge 1 commit into
binarywang:developfrom
liyong473:develop
Open

liyong473 wants to merge 1 commit into
binarywang:developfrom
liyong473:develop

Conversation

@liyong473

Copy link
Copy Markdown

No description provided.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 7c25e77e04

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

return new Date(in.nextInt() * 1000);
// 微信返回的是秒级时间戳,需转为毫秒;此处必须用 long 读取并运算,
// 否则 in.nextInt() * 1000 会发生 int 溢出,导致解析出错误的时间
return new Date(in.nextLong() * 1000L);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 在换算前校验秒级时间戳范围

当输入是 nextLong() 可接受、但绝对值超过毫秒换算范围的秒值时(例如 9223372036854776),这里的乘法会发生 long 溢出并静默生成完全错误的 Date;旧实现会因超出 int 范围而拒绝该输入。请在乘法前校验边界或使用 Math.multiplyExact 并将溢出转换为解析异常,避免异常响应被当作有效日期。

AGENTS.md reference: AGENTS.md:L47-L48

Useful? React with 👍 / 👎.

*
* @author liyong
*/
public class WxDateTypeAdapterTest {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 将新增测试加入 TestNG suite

weixin-java-common/pom.xml 将 Surefire 固定配置为运行 src/test/resources/testng.xml,而该 suite 只显式列出了原有的六个测试类,没有包含 WxDateTypeAdapterTest;因此 CI 的 mvn clean test -Dmaven.test.skip=false 不会执行这里新增的五个测试,日期溢出回归也不会被门禁发现。请把该类加入 suite,或调整配置以启用测试类自动发现。

AGENTS.md reference: AGENTS.md:L63-L65

Useful? React with 👍 / 👎.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The new regression test must be added to the configured TestNG suite before approval.

Get a fresh assessment by requesting another Copilot review.

Pull request overview

修复 WxDateTypeAdapter 解析秒级时间戳时的 int 溢出问题,并新增回归测试。

Changes:

  • 使用 long 读取并转换时间戳。
  • 增加 2038 年后时间戳、空值及序列化测试。
  • 中等问题:新增测试尚未加入固定 TestNG suite,Maven 当前不会执行该测试。
File summaries
File Description
weixin-java-common/src/test/java/me/chanjar/weixin/common/util/json/WxDateTypeAdapterTest.java 新增日期解析与序列化回归测试
weixin-java-common/src/main/java/me/chanjar/weixin/common/util/json/WxDateTypeAdapter.java 使用 long 避免时间戳转换溢出
Review details
  • Files reviewed: 2/2 changed files
  • Comments generated: 1
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

*
* @author liyong
*/
public class WxDateTypeAdapterTest {
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.

2 participants