summaryrefslogtreecommitdiffstats
path: root/chrome/browser/printing
diff options
context:
space:
mode:
authortsepez@chromium.org <tsepez@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-01-24 20:08:46 +0000
committertsepez@chromium.org <tsepez@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-01-24 20:08:46 +0000
commit5e73e5a36634589b1dfef43f4ed3fe82376fa436 (patch)
treef2a1e3982b1c29192430603fe61fdd9add2664bd /chrome/browser/printing
parent201aa408dae4f21ba3df7f1c2ea62465b73d37fc (diff)
downloadchromium_src-5e73e5a36634589b1dfef43f4ed3fe82376fa436.zip
chromium_src-5e73e5a36634589b1dfef43f4ed3fe82376fa436.tar.gz
chromium_src-5e73e5a36634589b1dfef43f4ed3fe82376fa436.tar.bz2
Check for possibility of NULL WebUI returns in PrintPreviewDialogController.
This is a case that is easily hit with the IPC fuzzer, and is easy to handle. Fixing this helps the testcases to run further. BUG=337535 Review URL: https://codereview.chromium.org/131343005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@246948 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/printing')
-rw-r--r--chrome/browser/printing/print_preview_dialog_controller.cc30
1 files changed, 18 insertions, 12 deletions
diff --git a/chrome/browser/printing/print_preview_dialog_controller.cc b/chrome/browser/printing/print_preview_dialog_controller.cc
index e190f01..1a54dc1 100644
--- a/chrome/browser/printing/print_preview_dialog_controller.cc
+++ b/chrome/browser/printing/print_preview_dialog_controller.cc
@@ -407,10 +407,12 @@ void PrintPreviewDialogController::OnRenderProcessExited(
for (size_t i = 0; i < closed_preview_dialogs.size(); ++i) {
RemovePreviewDialog(closed_preview_dialogs[i]);
- PrintPreviewUI* print_preview_ui = static_cast<PrintPreviewUI*>(
- closed_preview_dialogs[i]->GetWebUI()->GetController());
- if (print_preview_ui)
- print_preview_ui->OnPrintPreviewDialogClosed();
+ if (content::WebUI* web_ui = closed_preview_dialogs[i]->GetWebUI()) {
+ PrintPreviewUI* print_preview_ui =
+ static_cast<PrintPreviewUI*>(web_ui->GetController());
+ if (print_preview_ui)
+ print_preview_ui->OnPrintPreviewDialogClosed();
+ }
}
for (size_t i = 0; i < closed_initiators.size(); ++i)
@@ -529,10 +531,12 @@ void PrintPreviewDialogController::RemoveInitiator(
PrintViewManager::FromWebContents(initiator)->PrintPreviewDone();
// initiator is closed. Close the print preview dialog too.
- PrintPreviewUI* print_preview_ui =
- static_cast<PrintPreviewUI*>(preview_dialog->GetWebUI()->GetController());
- if (print_preview_ui)
- print_preview_ui->OnInitiatorClosed();
+ if (content::WebUI* web_ui = preview_dialog->GetWebUI()) {
+ PrintPreviewUI* print_preview_ui =
+ static_cast<PrintPreviewUI*>(web_ui->GetController());
+ if (print_preview_ui)
+ print_preview_ui->OnInitiatorClosed();
+ }
}
void PrintPreviewDialogController::RemovePreviewDialog(
@@ -549,10 +553,12 @@ void PrintPreviewDialogController::RemovePreviewDialog(
// Print preview WebContents is destroyed. Notify |PrintPreviewUI| to
// abort the initiator preview request.
- PrintPreviewUI* print_preview_ui = static_cast<PrintPreviewUI*>(
- preview_dialog->GetWebUI()->GetController());
- if (print_preview_ui)
- print_preview_ui->OnPrintPreviewDialogDestroyed();
+ if (content::WebUI* web_ui = preview_dialog->GetWebUI()) {
+ PrintPreviewUI* print_preview_ui =
+ static_cast<PrintPreviewUI*>(web_ui->GetController());
+ if (print_preview_ui)
+ print_preview_ui->OnPrintPreviewDialogDestroyed();
+ }
preview_operations_.erase(preview_operations_.begin() + i);
delete operation;