1*3ac0a46fSAndroid Build Coastguard Worker // Copyright 2016 The PDFium Authors 2*3ac0a46fSAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*3ac0a46fSAndroid Build Coastguard Worker // found in the LICENSE file. 4*3ac0a46fSAndroid Build Coastguard Worker 5*3ac0a46fSAndroid Build Coastguard Worker #include "core/fxcrt/css/cfx_css.h" 6*3ac0a46fSAndroid Build Coastguard Worker #include "core/fxcrt/css/cfx_csssyntaxparser.h" 7*3ac0a46fSAndroid Build Coastguard Worker #include "core/fxcrt/fx_string.h" 8*3ac0a46fSAndroid Build Coastguard Worker LLVMFuzzerTestOneInput(const uint8_t * data,size_t size)9*3ac0a46fSAndroid Build Coastguard Workerextern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { 10*3ac0a46fSAndroid Build Coastguard Worker WideString input = 11*3ac0a46fSAndroid Build Coastguard Worker WideString::FromUTF8(ByteStringView(data, static_cast<size_t>(size))); 12*3ac0a46fSAndroid Build Coastguard Worker 13*3ac0a46fSAndroid Build Coastguard Worker // If we convert the input into an empty string bail out. 14*3ac0a46fSAndroid Build Coastguard Worker if (input.IsEmpty()) 15*3ac0a46fSAndroid Build Coastguard Worker return 0; 16*3ac0a46fSAndroid Build Coastguard Worker 17*3ac0a46fSAndroid Build Coastguard Worker CFX_CSSSyntaxParser parser(input.AsStringView()); 18*3ac0a46fSAndroid Build Coastguard Worker CFX_CSSSyntaxParser::Status status; 19*3ac0a46fSAndroid Build Coastguard Worker do { 20*3ac0a46fSAndroid Build Coastguard Worker status = parser.DoSyntaxParse(); 21*3ac0a46fSAndroid Build Coastguard Worker } while (status != CFX_CSSSyntaxParser::Status::kError && 22*3ac0a46fSAndroid Build Coastguard Worker status != CFX_CSSSyntaxParser::Status::kEOS); 23*3ac0a46fSAndroid Build Coastguard Worker return 0; 24*3ac0a46fSAndroid Build Coastguard Worker } 25