OLD | NEW |
---|---|
(Empty) | |
1 // Copyright 2016 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 <stddef.h> | |
6 | |
7 #include "base/numerics/safe_conversions.h" | |
8 #include "media/filters/h264_parser.h" | |
9 | |
10 // Entry point for LibFuzzer. | |
11 extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { | |
12 if (size > 0) { | |
DaleCurtis
2016/03/05 01:30:06
Invert conditional, return 0 if !size.
jrummell
2016/03/07 20:07:28
Done.
| |
13 media::H264Parser parser; | |
14 parser.SetStream(data, base::checked_cast<off_t>(size)); | |
15 | |
16 // Parse until the end of stream/unsupported stream/error in stream is | |
17 // found. | |
18 while (true) { | |
19 media::H264NALU nalu; | |
20 media::H264Parser::Result res = parser.AdvanceToNextNALU(&nalu); | |
21 if (res != media::H264Parser::kOk) | |
22 break; | |
23 | |
24 switch (nalu.nal_unit_type) { | |
25 case media::H264NALU::kIDRSlice: | |
26 case media::H264NALU::kNonIDRSlice: { | |
27 media::H264SliceHeader shdr; | |
28 res = parser.ParseSliceHeader(nalu, &shdr); | |
29 } break; | |
DaleCurtis
2016/03/05 01:30:06
put break in the {} block.
jrummell
2016/03/07 20:07:28
Done.
| |
30 | |
31 case media::H264NALU::kSPS: { | |
32 int id; | |
33 res = parser.ParseSPS(&id); | |
34 } break; | |
35 | |
36 case media::H264NALU::kPPS: { | |
37 int id; | |
38 res = parser.ParsePPS(&id); | |
39 } break; | |
40 | |
41 case media::H264NALU::kSEIMessage: { | |
42 media::H264SEIMessage sei_msg; | |
43 res = parser.ParseSEI(&sei_msg); | |
44 } break; | |
45 | |
46 default: | |
47 // Skip any other NALU. | |
48 break; | |
49 } | |
50 if (res != media::H264Parser::kOk) | |
51 break; | |
52 } | |
53 } | |
54 | |
55 return 0; | |
56 } | |
OLD | NEW |