summaryrefslogtreecommitdiff
path: root/strings/json_normalize.c
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2023-04-28 13:39:33 +0300
committerMarko Mäkelä <marko.makela@mariadb.com>2023-04-28 13:39:33 +0300
commitd8997f875e2d78300999876e25d348cf6ad3f73e (patch)
tree8fad921e643da1b4ca98c713810554279a054f80 /strings/json_normalize.c
parentd0a71e90b8065cfa4122125dce1ad7f3fc6929df (diff)
parent7d967423fe2fd061c51f43230e0286cf7868c5b6 (diff)
downloadmariadb-git-d8997f875e2d78300999876e25d348cf6ad3f73e.tar.gz
Merge 10.8 into 10.9
Diffstat (limited to 'strings/json_normalize.c')
-rw-r--r--strings/json_normalize.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/strings/json_normalize.c b/strings/json_normalize.c
index 0b7f172dae6..2c66c712e81 100644
--- a/strings/json_normalize.c
+++ b/strings/json_normalize.c
@@ -147,13 +147,16 @@ json_normalize_number(DYNAMIC_STRING *out, const char *str, size_t str_len)
magnitude = (long)(j - 1);
- /* skip the . */
- if (str[i] == '.')
- ++i;
+ if (i < str_len)
+ {
+ /* skip the . */
+ if (str[i] == '.')
+ ++i;
- /* grab rest of digits before the E */
- for (; i < str_len && str[i] != 'e' && str[i] != 'E'; ++i)
- buf[j++] = str[i];
+ /* grab rest of digits before the E */
+ for (; i < str_len && str[i] != 'e' && str[i] != 'E'; ++i)
+ buf[j++] = str[i];
+ }
/* trim trailing zeros */
for (k = j - 1; k && buf[k] == '0'; --k, --j)
@@ -187,7 +190,7 @@ json_normalize_number(DYNAMIC_STRING *out, const char *str, size_t str_len)
err|= dynstr_append_mem(out, STRING_WITH_LEN("E"));
- if (str[i] == 'e' || str[i] == 'E')
+ if (i < str_len && (str[i] == 'e' || str[i] == 'E'))
{
char *endptr = NULL;
/* skip the [eE] */