krasin | f45d529 | 2015-10-22 01:46:22 | [diff] [blame] | 1 | // Copyright (c) 2015 The Chromium Authors. All rights reserved. |
| 2 | // Use of this source code is governed by a BSD-style license that can be |
| 3 | // found in the LICENSE file. |
| 4 | |
| 5 | #include "base/memory/scoped_ptr.h" |
| 6 | #include "courgette/assembly_program.h" |
| 7 | #include "courgette/courgette.h" |
| 8 | #include "courgette/encoded_program.h" |
huangs | ed2fc4d | 2016-01-29 23:54:13 | [diff] [blame] | 9 | #include "courgette/program_detector.h" |
krasin | f45d529 | 2015-10-22 01:46:22 | [diff] [blame] | 10 | |
| 11 | // Entry point for LibFuzzer. |
mmoroz | fa449544 | 2015-11-26 14:07:49 | [diff] [blame] | 12 | extern "C" int LLVMFuzzerTestOneInput(const unsigned char* data, size_t size) { |
huangs | 8d5be25 | 2016-01-29 22:14:18 | [diff] [blame] | 13 | scoped_ptr<courgette::AssemblyProgram> prog; |
krasin | f45d529 | 2015-10-22 01:46:22 | [diff] [blame] | 14 | courgette::Status status = |
| 15 | courgette::ParseDetectedExecutable(data, size, &prog); |
| 16 | if (status != courgette::C_OK) { |
| 17 | return 0; |
| 18 | } |
| 19 | scoped_ptr<courgette::EncodedProgram> enc_prog(prog->Encode()); |
krasin | f45d529 | 2015-10-22 01:46:22 | [diff] [blame] | 20 | return 0; |
| 21 | } |