| // Copyright 2015 The Chromium Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #include <string> | 
 | #include <vector> | 
 |  | 
 | #include "base/strings/string_number_conversions.h" | 
 | #include "starboard/types.h" | 
 |  | 
 | // Entry point for LibFuzzer. | 
 | extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { | 
 |   base::StringPiece string_piece_input(reinterpret_cast<const char*>(data), | 
 |                                        size); | 
 |   std::string string_input(reinterpret_cast<const char*>(data), size); | 
 |  | 
 |   int out_int; | 
 |   base::StringToInt(string_piece_input, &out_int); | 
 |   unsigned out_uint; | 
 |   base::StringToUint(string_piece_input, &out_uint); | 
 |   int64_t out_int64; | 
 |   base::StringToInt64(string_piece_input, &out_int64); | 
 |   uint64_t out_uint64; | 
 |   base::StringToUint64(string_piece_input, &out_uint64); | 
 |   size_t out_size; | 
 |   base::StringToSizeT(string_piece_input, &out_size); | 
 |  | 
 |   // Test for StringPiece16 if size is even. | 
 |   if (size % 2 == 0) { | 
 |     base::StringPiece16 string_piece_input16( | 
 |         reinterpret_cast<const base::char16*>(data), size / 2); | 
 |  | 
 |     base::StringToInt(string_piece_input16, &out_int); | 
 |     base::StringToUint(string_piece_input16, &out_uint); | 
 |     base::StringToInt64(string_piece_input16, &out_int64); | 
 |     base::StringToUint64(string_piece_input16, &out_uint64); | 
 |     base::StringToSizeT(string_piece_input16, &out_size); | 
 |   } | 
 |  | 
 |   double out_double; | 
 |   base::StringToDouble(string_input, &out_double); | 
 |  | 
 |   base::HexStringToInt(string_piece_input, &out_int); | 
 |   base::HexStringToUInt(string_piece_input, &out_uint); | 
 |   base::HexStringToInt64(string_piece_input, &out_int64); | 
 |   base::HexStringToUInt64(string_piece_input, &out_uint64); | 
 |   std::vector<uint8_t> out_bytes; | 
 |   base::HexStringToBytes(string_piece_input, &out_bytes); | 
 |  | 
 |   base::HexEncode(data, size); | 
 |  | 
 |   // Convert the numbers back to strings. | 
 |   base::NumberToString(out_int); | 
 |   base::NumberToString16(out_int); | 
 |   base::NumberToString(out_uint); | 
 |   base::NumberToString16(out_uint); | 
 |   base::NumberToString(out_int64); | 
 |   base::NumberToString16(out_int64); | 
 |   base::NumberToString(out_uint64); | 
 |   base::NumberToString16(out_uint64); | 
 |   base::NumberToString(out_double); | 
 |   base::NumberToString16(out_double); | 
 |  | 
 |   return 0; | 
 | } |