Commit 778e5593 authored by Adam Langley's avatar Adam Langley Committed by Commit Bot

device/fido: log CBOR errors from extension parsing.

This change causes errors from parsing the authenticator extension
outputs to be logged to chrome://device-log.

Change-Id: Ide4a5d4514f5af51a2d36ce309dfd286edb84d2d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1579913
Auto-Submit: Adam Langley <agl@chromium.org>
Commit-Queue: Martin Kreichgauer <martinkr@google.com>
Reviewed-by: default avatarMartin Kreichgauer <martinkr@google.com>
Cr-Commit-Position: refs/heads/master@{#653667}
parent 241e5eff
...@@ -6,8 +6,11 @@ ...@@ -6,8 +6,11 @@
#include <utility> #include <utility>
#include "base/strings/string_number_conversions.h"
#include "components/cbor/diagnostic_writer.h"
#include "components/cbor/reader.h" #include "components/cbor/reader.h"
#include "components/cbor/writer.h" #include "components/cbor/writer.h"
#include "components/device_event_log/device_event_log.h"
#include "device/fido/attested_credential_data.h" #include "device/fido/attested_credential_data.h"
#include "device/fido/fido_parsing_utils.h" #include "device/fido/fido_parsing_utils.h"
...@@ -43,8 +46,19 @@ base::Optional<AuthenticatorData> AuthenticatorData::DecodeAuthenticatorData( ...@@ -43,8 +46,19 @@ base::Optional<AuthenticatorData> AuthenticatorData::DecodeAuthenticatorData(
base::Optional<cbor::Value> extensions; base::Optional<cbor::Value> extensions;
if (flag_byte & static_cast<uint8_t>(Flag::kExtensionDataIncluded)) { if (flag_byte & static_cast<uint8_t>(Flag::kExtensionDataIncluded)) {
extensions = cbor::Reader::Read(auth_data); cbor::Reader::DecoderError error;
if (!extensions || !extensions->is_map()) { extensions = cbor::Reader::Read(auth_data, &error);
if (!extensions) {
FIDO_LOG(ERROR)
<< "CBOR decoding of authenticator data extensions failed ("
<< cbor::Reader::ErrorCodeToString(error) << ") from "
<< base::HexEncode(auth_data.data(), auth_data.size());
return base::nullopt;
}
if (!extensions->is_map()) {
FIDO_LOG(ERROR)
<< "Incorrect CBOR structure of authenticator data extensions: "
<< cbor::DiagnosticWriter::Write(*extensions);
return base::nullopt; return base::nullopt;
} }
} else if (!auth_data.empty()) { } else if (!auth_data.empty()) {
......
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