diff options
author | Marko Mäkelä <marko.makela@mariadb.com> | 2023-04-28 13:39:33 +0300 |
---|---|---|
committer | Marko Mäkelä <marko.makela@mariadb.com> | 2023-04-28 13:39:33 +0300 |
commit | d8997f875e2d78300999876e25d348cf6ad3f73e (patch) | |
tree | 8fad921e643da1b4ca98c713810554279a054f80 /strings/json_normalize.c | |
parent | d0a71e90b8065cfa4122125dce1ad7f3fc6929df (diff) | |
parent | 7d967423fe2fd061c51f43230e0286cf7868c5b6 (diff) | |
download | mariadb-git-d8997f875e2d78300999876e25d348cf6ad3f73e.tar.gz |
Merge 10.8 into 10.9
Diffstat (limited to 'strings/json_normalize.c')
-rw-r--r-- | strings/json_normalize.c | 17 |
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] */ |