diff options
author | Ryan Harrison <rharrison@chromium.org> | 2018-07-17 17:25:47 +0000 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2018-07-17 17:25:47 +0000 |
commit | a97a660d47cd500a00f69ad429de0ca1551c7198 (patch) | |
tree | 06c048d481398bed2d240055778f02bdce6eb758 /fxbarcode/oned/BC_OnedEAN8Writer.cpp | |
parent | ff402c2c4ce8ae8690959262ca731d5cc6bd7015 (diff) | |
download | pdfium-a97a660d47cd500a00f69ad429de0ca1551c7198.tar.xz |
Reserve space for result in ::FilterContents
This changes the implementation for the specific bug listed and
proactively fixes it in the other overrides. The general bug here is
that if you concat a WideString in a tight loop without first
reserving space, each call will cause an allocation size change and
memcpy. This is very expensive and causes ClusterFuzz cases to
timeout.
BUG=chromium:863295
Change-Id: I6c1d900a31b98cd9ddcf91d1ec0f3973c9cdfa26
Reviewed-on: https://pdfium-review.googlesource.com/38110
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Henrique Nakashima <hnakashima@chromium.org>
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
Diffstat (limited to 'fxbarcode/oned/BC_OnedEAN8Writer.cpp')
-rw-r--r-- | fxbarcode/oned/BC_OnedEAN8Writer.cpp | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/fxbarcode/oned/BC_OnedEAN8Writer.cpp b/fxbarcode/oned/BC_OnedEAN8Writer.cpp index 6862ba87a1..b953c121b0 100644 --- a/fxbarcode/oned/BC_OnedEAN8Writer.cpp +++ b/fxbarcode/oned/BC_OnedEAN8Writer.cpp @@ -69,6 +69,7 @@ bool CBC_OnedEAN8Writer::CheckContentValidity(const WideStringView& contents) { WideString CBC_OnedEAN8Writer::FilterContents(const WideStringView& contents) { WideString filtercontents; + filtercontents.Reserve(contents.GetLength()); wchar_t ch; for (size_t i = 0; i < contents.GetLength(); i++) { ch = contents[i]; |