[BUG] uint / uint fails with "int overflow" when the quotient is >= 2^63
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 84/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- node.js, typescript
- Ambito
- backend-api-design
Direzione di ricerca
L’issue indica packages/cel/src/std/math.ts e safeDivide, condivisa dagli overload int e uint. Leggi questa funzione e le definizioni degli overload, poi controlla i test di divisione per i valori con e senza segno. Il lavoro è completato quando i quozienti uint validi nell’intero intervallo di uint hanno esito positivo e il comportamento in caso di divisione per zero e di overflow con segno rimane corretto.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Description
Dividing two uint values throws int overflow during divide by ... whenever the quotient is larger than 9223372036854775807, although it is a valid uint. Per the language definition, uint / uint only errors on division by zero.
Steps to Reproduce
import { run } from "@bufbuild/cel";
for (const e of [
"18446744073709551615u / 1u",
"10000000000000000000u / 1u",
"uint(9223372036854775808.0) / 1u",
"18446744073709551615u / 2u",
]) {
try {
console.log(e, "=>", run(e, {}));
} catch (x) {
console.log(e, "THROWS", x.message);
}
}
node div.mjs
Expected Behavior
18446744073709551615u, 10000000000000000000u, 9223372036854775808u and 9223372036854775807u (as cel-go returns).
Actual Behavior
18446744073709551615u / 1u => _CelError: int overflow during divide by 1
10000000000000000000u / 1u => _CelError: int overflow during divide by 1
uint(9223372036854775808.0) / 1u => _CelError: int overflow during divide by 1
18446744073709551615u / 2u => Uint { _value: 9223372036854775807n, Symbol(@bufbuild/cel/uint): {} }
(run returns the error object; the stack traces are trimmed.)
Screenshots/Logs
See above.
Environment
- @bufbuild/cel version: 0.6.2 (also
mainat 34f0bee) - @bufbuild/cel-spec version: not used
- Node.js version: v26.13.0
Possible Solution
safeDivide in packages/cel/src/std/math.ts is shared by the int and uint overloads and always ends with safeInt(l / r, ...), so unsigned quotients get the signed int64 range check; the uint overload should use the uint range check.
Additional Context
None.
Credit: https://ucsbplse.github.io/
- Lingua principale
- TypeScript
- Stelle
- 42
- Fork
- 8
- Merge medio
- 1g 12h
- PR unite (30g)
- 5
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di bufbuild/cel-es
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 56/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
Iterating the result of map() or filter() is quadratic, and overflows the stack at about 8,000 itemsAperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 58/100
I maintainer di solito rispondono entro 1 giorno
-
Bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 48/100
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di bufbuild/cel-es
Issue simili
-
Language request: NixApertaenhancement language
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
pngwn/twinkleplop#178 ·
-
Type: Bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
resend/react-email#3889 ·
I maintainer di solito rispondono entro 1 giorno
-
build P3
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
maniator/verticopolis#1945 ·
I maintainer di solito rispondono entro 1 giorno
-
Admin users page number stays stale after filteringForse già presa @matthewxkong l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
feature request needs triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100