Commit 3e49c929 authored by Vladislav Kuzkokov's avatar Vladislav Kuzkokov Committed by Commit Bot

[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/+/2004992Reviewed-by: default avatarSean Kau <skau@chromium.org>
Reviewed-by: default avatarLei Zhang <thestig@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
Cr-Commit-Position: refs/heads/master@{#734128}
parent 8ee65e8a
......@@ -16,6 +16,7 @@
namespace {
const char kCUPSDeviceUri[] = "device-uri";
const char kCUPSPrinterInfoOpt[] = "printer-info";
const char kCUPSPrinterStateOpt[] = "printer-state";
......@@ -123,6 +124,12 @@ std::string CupsPrinter::GetMakeAndModel() const {
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 {
if (dest_info_)
return true;
......
......@@ -77,6 +77,8 @@ class PRINTING_EXPORT CupsPrinter : public CupsOptionProvider {
std::string GetMakeAndModel() const;
std::string GetUri() const;
// Lazily initialize dest info as it can require a network call
bool EnsureDestInfo() const;
......
......@@ -356,6 +356,15 @@ PrintingContext::Result PrintingContextChromeos::UpdatePrinterSettings(
SetPrintableArea(settings_.get(), media, true);
cups_options_ = SettingsToCupsOptions(*settings_);
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();
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