Merge "ART: Change sprintf to snprintf"
diff --git a/runtime/utils.cc b/runtime/utils.cc
index c52549e..d038571 100644
--- a/runtime/utils.cc
+++ b/runtime/utils.cc
@@ -534,15 +534,17 @@
return StringPrintf("%" PRIu64 "%s", whole_part, unit);
} else {
static constexpr size_t kMaxDigits = 30;
+ size_t avail_digits = kMaxDigits;
char fraction_buffer[kMaxDigits];
char* ptr = fraction_buffer;
uint64_t multiplier = 10;
// This infinite loops if fractional part is 0.
- while (fractional_part * multiplier < divisor) {
+ while (avail_digits > 1 && fractional_part * multiplier < divisor) {
multiplier *= 10;
*ptr++ = '0';
+ avail_digits--;
}
- sprintf(ptr, "%" PRIu64, fractional_part);
+ snprintf(ptr, avail_digits, "%" PRIu64, fractional_part);
fraction_buffer[std::min(kMaxDigits - 1, max_fraction_digits)] = '\0';
return StringPrintf("%" PRIu64 ".%s%s", whole_part, fraction_buffer, unit);
}