UPLC: Flat decoding accepts a byte string whose filler ends mid-byte
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ó
- 2/5
- Thời gian dự kiến
- 1-3 giờ
- Mức phù hợp với người mới
- 79/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- typescript
- Lĩnh vực
- backend
Hướng nghiên cứu
Bắt đầu tại UPLC.ts, ở decodeByteString (dòng 510) và _skipByte (dòng 461), sau đó so sánh với kiểm tra ranh giới byte được mô tả trong Plutus Decoder/Prim.hs (dòng 443). Khi phần đệm kết thúc giữa một byte, hãy để quá trình giải mã ném ra UPLCError; xác minh rằng đầu vào hex đã cho bị từ chối trong khi các chuỗi byte hợp lệ vẫn được giải mã.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
UPLC.fromFlatHex("01010048a0354001") decodes to the byte string constant aa, and UPLC.toFlatHex writes it back as 010100488101aa0001. Plutus rejects the input.
In those bytes, the type list ends at bit 2 of the byte a0. The filler before the byte string is a single 1 bit, so it ends at bit 3 of that byte, and the chunk length and data that follow start mid-byte. decodeByteString (UPLC.ts:510) calls _skipByte (UPLC.ts:461), which reads bits until a 1 and never checks that it stopped on a byte boundary, then reads the chunks unaligned. Plutus reads the same filler (dFiller, PlutusCore/Flat/Decoder/Strict.hs:301-304) and then fails in getChunksInfo unless the position is byte aligned (Decoder/Prim.hs:443, badEncoding endPtr s "usedBits /= 0", at plutus 1.72.0.0).
Every byte string goes through this path: ByteString, String and Data constants, and with #667 the keys of Value constants. Only hand-made or corrupted input triggers it, and the ledger rejects such a script. The effect is that decoding and re-encoding changes the script bytes, and so its hash, where it should fail.
decodeByteString should throw a UPLCError when the filler does not end on a byte boundary.
- Ngôn ngữ chính
- TypeScript
- Star
- 22
- Fork
- 35
- Merge trung bình
- 19 giờ 9 phút
- Pull request đã merge (30 ngày)
- 65
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Không 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 IntersectMBO/evolution-sdk
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
IntersectMBO/evolution-sdk#696 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
IntersectMBO/evolution-sdk#559 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
enhancement
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
IntersectMBO/evolution-sdk#557 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
txBuilder: committee cert redeemers are never resolved to a certificate indexCó thể đã có người làm @Kshot3000 đã nhận 7 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 80/100
IntersectMBO/evolution-sdk#518 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
RewardAccount: validate header type bits and bech32 prefixCó thể đã có người làm @Kshot3000 đã nhận 7 ngày trước. Đang mởenhancement external-review
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
IntersectMBO/evolution-sdk#456 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của IntersectMBO/evolution-sdk
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
Maintainer thường phản hồi trong vòng 1 ngày
-
bug
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 76/100
logto-io/logto#9837 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
community first-timers-only good first issue hacktoberfest help wanted low hanging fruit up-for-grabs
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 76/100
lingdojo/kana-dojo#32964 · 1 bình luận · 5 reaction ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Documentation status: needs triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
mastra-ai/mastra#28194 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
priority-low refactor-3
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
Maintainer thường phản hồi trong vòng 3 ngày