Skip to content
Snippets Groups Projects
Commit 9ffcccf4 authored by mark@chromium.org's avatar mark@chromium.org
Browse files

Size the buffer used for the metrics log text properly.

The existing code was abusing the WriteInto interface (base/string_util.h).
The size passed to WriteInto should be the size of the string plus one for
a terminating NUL byte.

This bug caused the final newline in the log to be clipped.  c_str users
(there probably weren't any) would see the final newline which wouldn't be
wouldn't be followed by a NUL byte.

TEST=not really any
BUG=21733
Review URL: http://codereview.chromium.org/194099

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@26280 0039d316-1c4b-4281-b951-d872f2087c98
parent 1a5a71f1
No related branches found
No related tags found
No related merge requests found
......@@ -405,7 +405,7 @@ MetricsService::MetricsService()
server_permits_upload_(true),
state_(INITIALIZED),
pending_log_(NULL),
pending_log_text_(""),
pending_log_text_(),
current_fetch_(NULL),
current_log_(NULL),
idle_since_last_transmission_(false),
......@@ -1205,9 +1205,11 @@ void MetricsService::PreparePendingLogText() {
DCHECK(pending_log());
if (!pending_log_text_.empty())
return;
int original_size = pending_log_->GetEncodedLogSize();
pending_log_->GetEncodedLog(WriteInto(&pending_log_text_, original_size),
original_size);
int text_size = pending_log_->GetEncodedLogSize();
// Leave room for the NUL terminator.
pending_log_->GetEncodedLog(WriteInto(&pending_log_text_, text_size + 1),
text_size);
}
void MetricsService::PrepareFetchWithPendingLog() {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment