diff --git a/mongoose.c b/mongoose.c index f125bd52..df4f6aec 100644 --- a/mongoose.c +++ b/mongoose.c @@ -559,7 +559,9 @@ static size_t mg_dtoa(char *dst, size_t dstlen, double d, int width) { } while (n > 0 && buf[s + n - 1] == '0') n--; // Trim trailing zeros if (n > 0 && buf[s + n - 1] == '.') n--; // Trim trailing dot - buf[s + n] = '\0'; + n += s; + if (n >= (int) sizeof(buf)) n = (int) sizeof(buf) - 1; + buf[n] = '\0'; return mg_snprintf(dst, dstlen, "%s", buf); } diff --git a/src/fmt.c b/src/fmt.c index 6d724ca4..947d9736 100644 --- a/src/fmt.c +++ b/src/fmt.c @@ -148,7 +148,9 @@ static size_t mg_dtoa(char *dst, size_t dstlen, double d, int width) { } while (n > 0 && buf[s + n - 1] == '0') n--; // Trim trailing zeros if (n > 0 && buf[s + n - 1] == '.') n--; // Trim trailing dot - buf[s + n] = '\0'; + n += s; + if (n >= (int) sizeof(buf)) n = (int) sizeof(buf) - 1; + buf[n] = '\0'; return mg_snprintf(dst, dstlen, "%s", buf); }