Serialize patch vulnerabilities through one helper; get's selectionRequired options[] are unsorted and drop description

Đang mở
#1,836 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
3/5
Thời gian dự kiến
1-2 ngày
Mức phù hợp với người mới
58/100
Loại issue
Tái cấu trúc
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
rust
Lĩnh vực
cli

Hướng nghiên cứu

Start with crates/socket-patch-cli/src/commands/agent_download.rs, list.rs, get.rs, and json_envelope.rs; compare the three vulnerability serializers and inspect select_json_mode_multi_free_options_serialize_vulnerabilities in get.rs. Run that test, then update it to assert that options contain vulnerabilities sorted by id with descriptions; confirm the other JSON outputs stay unchanged except for any deliberate severity field addition.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

agent:triaged arch-audit priority:p3 refactor

[agent] Filed by the scheduled architecture audit (audit-cli-tests). Register: register comment.

Kind: refactor (with a small output fix). Register ID: T02.

Problem

The per-vulnerability JSON object {id, cves, severity, summary, description} is built by hand in three places, and the copies have drifted:

  • agent_download::patch_event_metadata L119-L141 includes description and sorts by id. Its comment notes that "HashMap iteration is otherwise nondeterministic and consumers diff this output".
  • list.rs L172-L192 builds the same shape from a PatchRecord, sorted and with description, but it omits the top-level severity that patch_event_metadata emits.
  • get.rs L767-L790, the selectionRequired options[], iterates p.vulnerabilities (a HashMap) unsorted and omits description.

So get --json <CVE> with several free options lists each option's vulnerabilities in a different order from run to run. The test that claims to cover this, select_json_mode_multi_free_options_serialize_vulnerabilities (get.rs L4898), only asserts Err(1), so the drift went unnoticed.

Proposed change

  • Add one #[derive(Serialize)] vulnerability view, or a single vuln_json(id, &v) helper, in json_envelope.rs. It returns the list sorted by id.
  • Use it from all three sites.
  • Decide in the PR whether list gains the top-level severity, and say so in the PR description.

Size

3 to 4 files. About −40 / +30 lines.

Acceptance criteria

  • scan/get event details and list --json are byte-identical before and after, apart from any field the PR deliberately adds.
  • get's options[].vulnerabilities is sorted by id and carries description.
  • The fake test above captures the envelope and asserts the sorted options[].vulnerabilities.
Ngôn ngữ chính
Rust
Star
9
Fork
2
Merge trung bình
20 giờ 47 phút
Pull request đã merge (30 ngày)
681

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của SocketDev/socket-patch

Tất cả issue của SocketDev/socket-patch

Issue tương tự

Thêm issue về Rust

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.