summaryrefslogtreecommitdiff
path: root/quickjs.c
diff options
context:
space:
mode:
authorSaúl Ibarra Corretgé <s@saghul.net>2023-12-22 22:50:02 +0100
committerSaúl Ibarra Corretgé <s@saghul.net>2024-02-11 20:59:17 +0100
commite53d62235968ebbde3ba7bcef64cd9458cbfb8da (patch)
treec04b1460d4101b3443275a4b48dab070f3e3fe02 /quickjs.c
parentfd6e039770e3ec740aae258e42b6f16ea26e21bf (diff)
downloadquickjs-e53d62235968ebbde3ba7bcef64cd9458cbfb8da.tar.gz
quickjs-e53d62235968ebbde3ba7bcef64cd9458cbfb8da.zip
Fix UB in js_dtoa1
Diffstat (limited to 'quickjs.c')
-rw-r--r--quickjs.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/quickjs.c b/quickjs.c
index c39e83c..63af9f0 100644
--- a/quickjs.c
+++ b/quickjs.c
@@ -11492,8 +11492,10 @@ static void js_dtoa1(char *buf, double d, int radix, int n_digits, int flags)
} else if (flags == JS_DTOA_VAR_FORMAT) {
int64_t i64;
char buf1[70], *ptr;
+ if (d > (double)MAX_SAFE_INTEGER || d < (double)-MAX_SAFE_INTEGER)
+ goto generic_conv;
i64 = (int64_t)d;
- if (d != i64 || i64 > MAX_SAFE_INTEGER || i64 < -MAX_SAFE_INTEGER)
+ if (d != i64)
goto generic_conv;
/* fast path for integers */
ptr = i64toa(buf1 + sizeof(buf1), i64, radix);