diff options
author | xhwang <xhwang@chromium.org> | 2016-03-01 19:49:56 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-03-02 03:51:53 +0000 |
commit | 2fe13fa6192debf74dc920d02a3396d8f3529574 (patch) | |
tree | a5be1fdad2b0755c20266d313d38ac0487cd1c38 /media/test/pipeline_integration_fuzzertest.cc | |
parent | 0d2d3a059242663ac56cb036c2fb0bba0d7322d6 (diff) | |
download | chromium_src-2fe13fa6192debf74dc920d02a3396d8f3529574.zip chromium_src-2fe13fa6192debf74dc920d02a3396d8f3529574.tar.gz chromium_src-2fe13fa6192debf74dc920d02a3396d8f3529574.tar.bz2 |
media: Add media pipeline fuzzer test.
BUG=584119
TEST=Add a fuzzer test.
Review URL: https://codereview.chromium.org/1757603002
Cr-Commit-Position: refs/heads/master@{#378679}
Diffstat (limited to 'media/test/pipeline_integration_fuzzertest.cc')
-rw-r--r-- | media/test/pipeline_integration_fuzzertest.cc | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/media/test/pipeline_integration_fuzzertest.cc b/media/test/pipeline_integration_fuzzertest.cc new file mode 100644 index 0000000..b9fa6b7 --- /dev/null +++ b/media/test/pipeline_integration_fuzzertest.cc @@ -0,0 +1,34 @@ +// Copyright 2016 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 "base/at_exit.h" +#include "base/command_line.h" +#include "base/logging.h" +#include "media/base/pipeline_status.h" +#include "media/test/pipeline_integration_test_base.h" + +// Entry point for LibFuzzer. +extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { + // Media pipeline starts new threads, which needs AtExitManager. + base::AtExitManager at_exit; + + // Media pipeline checks command line arguments internally. + base::CommandLine::Init(0, nullptr); + + media::PipelineIntegrationTestBase test; + + media::PipelineStatus pipeline_status = + test.Start(data, size, media::PipelineIntegrationTestBase::kClockless); + if (pipeline_status != media::PIPELINE_OK) + return 0; + + test.Play(); + pipeline_status = test.WaitUntilEndedOrError(); + if (pipeline_status != media::PIPELINE_OK) + return 0; + + test.Seek(base::TimeDelta()); + + return 0; +} |