summaryrefslogtreecommitdiffstats
path: root/printing
diff options
context:
space:
mode:
authorvitalybuka@chromium.org <vitalybuka@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-02-21 23:27:25 +0000
committervitalybuka@chromium.org <vitalybuka@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-02-21 23:27:25 +0000
commit25ecf19e35e5e874d53f0f029ba7fbc6b68aa31e (patch)
tree1adf0772511b9a65c63a6b8c1b9c0e97e9a1ab61 /printing
parente908b234787a8f216ca36ac0f531a1cde04e3152 (diff)
downloadchromium_src-25ecf19e35e5e874d53f0f029ba7fbc6b68aa31e.zip
chromium_src-25ecf19e35e5e874d53f0f029ba7fbc6b68aa31e.tar.gz
chromium_src-25ecf19e35e5e874d53f0f029ba7fbc6b68aa31e.tar.bz2
Less strict CHECK for DeviceCapabilities results.
We should crash only if returned result is bigger that buffer we provided. BUG=345605 NOTRY=true Review URL: https://codereview.chromium.org/175603002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@252685 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'printing')
-rw-r--r--printing/backend/print_backend_win.cc14
1 files changed, 10 insertions, 4 deletions
diff --git a/printing/backend/print_backend_win.cc b/printing/backend/print_backend_win.cc
index b23407c..7d4ebda 100644
--- a/printing/backend/print_backend_win.cc
+++ b/printing/backend/print_backend_win.cc
@@ -8,6 +8,7 @@
#include <winspool.h>
#include "base/memory/scoped_ptr.h"
+#include "base/numerics/safe_conversions.h"
#include "base/strings/string_piece.h"
#include "base/strings/utf_string_conversions.h"
#include "base/win/scoped_bstr.h"
@@ -42,10 +43,15 @@ void GetDeviceCapabilityArray(const wchar_t* printer,
int count = DeviceCapabilities(printer, port, id, NULL, NULL);
if (count <= 0)
return;
- result->resize(count);
- CHECK_EQ(count,
- DeviceCapabilities(printer, port, id,
- reinterpret_cast<LPTSTR>(result->data()), NULL));
+ std::vector<T> tmp;
+ tmp.resize(count * 2);
+ count = DeviceCapabilities(printer, port, id,
+ reinterpret_cast<LPTSTR>(tmp.data()), NULL);
+ if (count <= 0)
+ return;
+ CHECK_LE(count, base::checked_cast<int>(tmp.size()));
+ tmp.resize(count);
+ result->swap(tmp);
}
void LoadPaper(const wchar_t* printer,