summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Rasmussen <sebras@gmail.com>2012-02-19 18:06:50 +0100
committerRobin Watts <robin.watts@artifex.com>2012-03-12 13:28:00 +0000
commit71e34dd2493b41836db5a9b539ac7ab38e18ddd5 (patch)
treea0688b371d281ce2051ebd25808d74dd475ce4f0
parenta7a180366686298fa7f7aae686152e5a759d3a89 (diff)
downloadmupdf-71e34dd2493b41836db5a9b539ac7ab38e18ddd5.tar.xz
Clamp real numbers when parsing.
Instead of returning in 1.0 for underflow/overflow, return minimum value for underflow and maximum value for overflow. NaN returns 1.0.
-rw-r--r--fitz/base_string.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/fitz/base_string.c b/fitz/base_string.c
index dd9f8ea2..2c8877c8 100644
--- a/fitz/base_string.c
+++ b/fitz/base_string.c
@@ -256,10 +256,11 @@ float fz_atof(const char *s)
* as we convert to a float. */
errno = 0;
d = strtod(s, NULL);
- if (errno == ERANGE || d > FLT_MAX || d < -FLT_MAX) {
+ if (errno == ERANGE || isnan(d)) {
/* Return 1.0, as it's a small known value that won't cause a
- * divide by 0. */
+ divide by 0. */
return 1.0;
}
+ d = CLAMP(d, -FLT_MAX, FLT_MAX);
return (float)d;
}