Fix bad usage of strncat introduces in 1a94c70. Pointed out by @rouault in PR #331.

This commit is contained in:
Eric Haszlakiewicz
2017-07-09 15:04:18 -07:00
parent 55ecae3e58
commit 7b7a76e161

View File

@@ -774,12 +774,11 @@ static int json_object_double_to_json_string_format(struct json_object* jso,
if (!format) if (!format)
format = std_format; format = std_format;
size = snprintf(buf, sizeof(buf), format, jso->o.c_double); size = snprintf(buf, sizeof(buf), format, jso->o.c_double);
if (modf(jso->o.c_double, &dummy) == 0) if (modf(jso->o.c_double, &dummy) == 0 && size >= 0 && size < (int)sizeof(buf) - 2)
{ {
// Ensure it looks like a float, even if snprintf didn't. // Ensure it looks like a float, even if snprintf didn't.
strncat(buf, ".0", sizeof(buf) - 1); strcat(buf, ".0");
if (size >= 0) size += 2;
size += 2; // yes, even if strncat ran out of room
} }
} }
// although unlikely, snprintf can fail // although unlikely, snprintf can fail