Commit 626d9f9c authored by Vladislav Kuzkokov's avatar Vladislav Kuzkokov Committed by Commit Bot

Reland "[CrOS Printing] Don't send username and filename unencrypted"

This is a reland of 3e49c929

Original change's description:
> [CrOS Printing] Don't send username and filename unencrypted
>
> This situation may come up if policy was changed after printer was
> selected. We reject printing job since silently omitting username and
> filename could be confusing.
>
> Bug: 1042798
> Change-Id: Iba385503d8f7e960291728d6515ca7c236220847
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2004992
> Reviewed-by: Sean Kau <skau@chromium.org>
> Reviewed-by: Lei Zhang <thestig@chromium.org>
> Commit-Queue: Lei Zhang <thestig@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#734128}

TBR=thestig@chromium.org,skau@chromium.org,yoichio@chromium.org

Bug: 1042798
Change-Id: I75d30cc7c94d843cbbc32318907165bfede6df69
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2015029Reviewed-by: default avatarVladislav Kuzkokov <vkuzkokov@chromium.org>
Commit-Queue: Vladislav Kuzkokov <vkuzkokov@chromium.org>
Cr-Commit-Position: refs/heads/master@{#734453}
parent 3aa1281c
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
namespace { namespace {
const char kCUPSDeviceUri[] = "device-uri";
const char kCUPSPrinterInfoOpt[] = "printer-info"; const char kCUPSPrinterInfoOpt[] = "printer-info";
const char kCUPSPrinterStateOpt[] = "printer-state"; const char kCUPSPrinterStateOpt[] = "printer-state";
...@@ -123,6 +124,12 @@ std::string CupsPrinter::GetMakeAndModel() const { ...@@ -123,6 +124,12 @@ std::string CupsPrinter::GetMakeAndModel() const {
return make_and_model ? std::string(make_and_model) : std::string(); return make_and_model ? std::string(make_and_model) : std::string();
} }
std::string CupsPrinter::GetUri() const {
const char* uri = cupsGetOption(kCUPSDeviceUri, destination_->num_options,
destination_->options);
return uri ? std::string(uri) : std::string();
}
bool CupsPrinter::EnsureDestInfo() const { bool CupsPrinter::EnsureDestInfo() const {
if (dest_info_) if (dest_info_)
return true; return true;
......
...@@ -77,6 +77,8 @@ class PRINTING_EXPORT CupsPrinter : public CupsOptionProvider { ...@@ -77,6 +77,8 @@ class PRINTING_EXPORT CupsPrinter : public CupsOptionProvider {
std::string GetMakeAndModel() const; std::string GetMakeAndModel() const;
std::string GetUri() const;
// Lazily initialize dest info as it can require a network call // Lazily initialize dest info as it can require a network call
bool EnsureDestInfo() const; bool EnsureDestInfo() const;
......
...@@ -356,6 +356,15 @@ PrintingContext::Result PrintingContextChromeos::UpdatePrinterSettings( ...@@ -356,6 +356,15 @@ PrintingContext::Result PrintingContextChromeos::UpdatePrinterSettings(
SetPrintableArea(settings_.get(), media, true); SetPrintableArea(settings_.get(), media, true);
cups_options_ = SettingsToCupsOptions(*settings_); cups_options_ = SettingsToCupsOptions(*settings_);
send_user_info_ = settings_->send_user_info(); send_user_info_ = settings_->send_user_info();
if (send_user_info_) {
DCHECK(printer_);
std::string uri_string = printer_->GetUri();
const base::StringPiece uri(uri_string);
if (!uri.starts_with("ipps:") && !uri.starts_with("https:") &&
!uri.starts_with("usb:") && !uri.starts_with("ippusb:")) {
return OnError();
}
}
username_ = send_user_info_ ? settings_->username() : std::string(); username_ = send_user_info_ ? settings_->username() : std::string();
return OK; return OK;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment