| // Copyright 2022 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include"printing/client_info_helpers.h" |
| |
| #include"base/no_destructor.h" |
| #include"base/types/optional_util.h" |
| #include"printing/mojom/print.mojom.h" |
| #include"third_party/re2/src/re2/re2.h" |
| |
| namespace printing{ |
| |
| namespace{ |
| |
| boolValidateClientType(mojom::IppClientInfo::ClientType type){ |
| return type>= mojom::IppClientInfo::ClientType::kMinValue&& |
| type<= mojom::IppClientInfo::ClientType::kMaxValue; |
| } |
| |
| boolValidateStringMember(const std::string* value,size_t max_length){ |
| staticconst base::NoDestructor<RE2> kStringRegex("[a-zA-Z0-9_.-]*"); |
| return value==nullptr|| |
| (value->size()<= max_length&& RE2::FullMatch(*value,*kStringRegex)); |
| } |
| |
| }// namespace |
| |
| boolValidateClientInfoItem(const mojom::IppClientInfo& client_info){ |
| returnValidateClientType(client_info.client_type)&& |
| ValidateStringMember(&client_info.client_name, |
| kClientInfoMaxNameLength)&& |
| ValidateStringMember(&client_info.client_string_version, |
| kClientInfoMaxStringVersionLength)&& |
| ValidateStringMember(base::OptionalToPtr(client_info.client_patches), |
| kClientInfoMaxPatchesLength)&& |
| ValidateStringMember(base::OptionalToPtr(client_info.client_version), |
| kClientInfoMaxVersionLength); |
| } |
| |
| }// namespace printing |