UPLC: Flat decoding accepts a byte string whose filler ends mid-byte
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 79/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- Active
- Stack technique
- typescript
- Domaine
- backend
Piste de recherche
Commencez dans UPLC.ts, à decodeByteString (ligne 510) et _skipByte (ligne 461), puis comparez la vérification de la limite d’octet décrite dans Plutus Decoder/Prim.hs (ligne 443). Faites en sorte que le décodage déclenche une UPLCError lorsque le remplissage se termine au milieu d’un octet ; vérifiez que l’entrée hexadécimale indiquée est rejetée tandis que les chaînes d’octets valides continuent d’être décodées.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
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.
- Langage dominant
- TypeScript
- Étoiles
- 22
- Forks
- 35
- Merge moyen
- 19 h 9 min
- PR mergées (30 j)
- 65
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de IntersectMBO/evolution-sdk
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
IntersectMBO/evolution-sdk#696 ·
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
IntersectMBO/evolution-sdk#559 ·
Les mainteneurs répondent en général sous 1 jour
-
enhancement
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
IntersectMBO/evolution-sdk#557 ·
Les mainteneurs répondent en général sous 1 jour
-
txBuilder: committee cert redeemers are never resolved to a certificate indexPeut-être à nouveau libre Une pull request pour cette issue a été fermée sans être fusionnée. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 80/100
IntersectMBO/evolution-sdk#518 ·
Les mainteneurs répondent en général sous 1 jour
-
RewardAccount: validate header type bits and bech32 prefixPeut-être à nouveau libre Une pull request pour cette issue a été fermée sans être fusionnée. Ouverteenhancement external-review
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
IntersectMBO/evolution-sdk#456 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de IntersectMBO/evolution-sdk
Issues similaires
-
clawsweeper:fix-shape-clear clawsweeper:queueable-fix clawsweeper:source-repro impact:ux-friction issue-rating: 🦞 diamond lobster no-stale P3
Difficulté 2/5 1-3 heures Accessibilité débutants 73/100
openclaw/openclaw#182077 · 1 commentaire · 1 réaction ·
Les mainteneurs répondent en général sous 1 jour
-
aikido high security
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
dequelabs/axe-linter-action#161 ·
-
[Feature Request] Update the DimCode agent icon to the 45:32 brand markPeut-être pris @eric8810 l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Les mainteneurs répondent en général sous 1 jour
-
[Feature]: 建议导入源后,自动切换到新导入的源Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 66/100
lyswhut/lx-music-desktop#3026 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
abhigyanpatwari/GitNexus#3704 ·
Les mainteneurs répondent en général sous 1 jour