freestanding_check: hosted-RNG check misses rand/srand in headers, macro aliases and function pointers
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ó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 35/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Lĩnh vực
- build-system, tooling
Hướng nghiên cứu
Start in tools/freestanding_check.sh, where the hosted-RNG stage greps src/.c and extensions/.c for rand( and srand(), and read tools/freestanding_allowlist.txt to see why stage 1 passes. The proposed fix replaces the textual check with an nm -u scan of the hosted objects built by the gate's rows, so the design needs deciding first. Done when the four planted cases (static inline in a header, macro alias, function pointer, untracked file) make make freestanding-check exit nonzero, and src/freestanding/ stays green.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
The hosted-RNG half of tools/freestanding_check.sh (#1818; fail-closed fix in the PR for #2308) searches only tracked src/*.c and extensions/*.c, outside src/freestanding/, for the literal spelling rand( / srand(. The following reach libc rand/srand from hosted runtime code without being seen:
- A call inside a
static inlinefunction, or a macro body, in a header (src/*.h,extensions/*.h). - A call through a macro alias, e.g.
#define RNG randand thenRNG(), or through a function pointer (int (*r)(void) = rand;). - Untracked files.
git grepsearches the index, so a new file that has not beengit added is skipped in a local run. CI only sees committed files, so this matters only locally.
Stage 1 cannot catch any of these, because rand/srand are in tools/freestanding_allowlist.txt.
Possible root fix: check the symbol level instead of the spelling. Every hosted object built by the gate's rows would have no undefined reference to rand/srand (nm -u over the objects that are not freestanding), so headers, macros and pointers are all covered. The textual grep could stay as a fast first pass.
Found while reviewing the hq#58 fix (https://github.com/InauguralSystems/hq/issues/58).
Done when
- A planted
static inline int r(void) { return rand(); }in a header that a runtime.cfile includes and calls makesmake freestanding-checkexit nonzero. - A planted
#define RNG randplusRNG()insrc/*.cmakes it exit nonzero. - A planted
int (*p)(void) = rand;insrc/*.cmakes it exit nonzero. -
src/freestanding/keeps its ownrandimplementation, and that case is still green.
Generated by Claude Code
- Ngôn ngữ chính
- C
- Star
- 3
- Fork
- 7
- Merge trung bình
- 6 giờ 32 phút
- Pull request đã merge (30 ngày)
- 285
Chuẩn bị môi trường
Khởi chạy dev container của dự án ngay trên trình duyệt, bằng tài khoản GitHub của bạn.
- Có Dockerfile hoặc tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- 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.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của InauguralSystems/EigenScript
-
good first issue needs-triage
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 88/100
InauguralSystems/EigenScript#2347 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
needs-triage
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 82/100
InauguralSystems/EigenScript#2335 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
area:embed kind:bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
InauguralSystems/EigenScript#2311 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
area:gates kind:gate-defect
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
InauguralSystems/EigenScript#2305 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
area:ci bug found-by:duet-audit
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
InauguralSystems/EigenScript#2283 ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của InauguralSystems/EigenScript
Issue tương tự
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
FujiNetWIFI/fujinet-config#379 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Ship /Local/Applications, the Local domain's Applications folderCó thể đã có người làm @pkgdemon đã nhận hôm nay. Đang mởarea:base enhancement
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 94/100
nextbsd/nextbsd-userland#612 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
zephyrproject-rtos/zephyr#125543 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
colbymchenry/codegraph#3277 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100