Blame view

ffmpeg-4.2.2/tools/target_dec_fate.sh 2.51 KB
aac5773f   hucm   功能基本完成,接口待打磨
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
  #!/bin/sh
  #
  # * Copyright (C) 2018 Michael Niedermayer (michaelni@gmx.at)
  # *
  # * This file is part of FFmpeg.
  # *
  # * FFmpeg is free software; you can redistribute it and/or modify
  # * it under the terms of the GNU General Public License as published by
  # * the Free Software Foundation; either version 2 of the License, or
  # * (at your option) any later version.
  # *
  # * FFmpeg is distributed in the hope that it will be useful,
  # * but WITHOUT ANY WARRANTY; without even the implied warranty of
  # * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  # * GNU General Public License for more details.
  # *
  # * You should have received a copy of the GNU General Public License
  # * along with FFmpeg; if not, write to the Free Software
  # * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  
  set -e
  
  LC_ALL=C
  export LC_ALL
  
  LIST=target_dec_fate.list
  
  show_help(){
      cat <<EOF
  Usage: ./target_dec_fate.sh <directory> [<test to run>]
  
  directory       the directory into which sample files will be downloaded
  test to run     the number of the issue to test
  Note, some test samples may not yet be available to the public, also this
  script will not download samples which are already in the directory. So you
  may want to preserve its content between runs.
  EOF
      exit 0
  }
  
  test -z "$1"  && show_help
  test ! -d "$1"  && echo $1 is not an accessable directory && show_help
  test ! -f target_dec_fate.sh && echo $0 Must be run from its location && show_help
  grep 'CONFIG_OSSFUZZ 0' ../config.h && echo not configured for ossfuzz && show_help
  
  #Download testcases
  while read -r LINE; do
      ISSUE_NUM=`echo $LINE | sed 's#/.*##'`
      FILE_ID=`echo $LINE | sed 's#.*/clusterfuzz-testcase[a-zA-Z0-9_-]*-\([0-9]*\).*#\1#'`
      FILE=`echo $LINE | sed 's# .*##'`
      if test -f "$1/$FILE" ; then
          echo exists       $FILE
      elif echo "$ISSUE_NUM" | grep '#' >/dev/null ; then
          echo disabled     $FILE
      else
          echo downloading  $FILE
          mkdir -p "$1/$ISSUE_NUM"
          wget -O "$1/$FILE" "https://oss-fuzz.com/download?testcase_id=$FILE_ID" || rm "$1/$FILE"
      fi
  done < "$LIST"
  
  #Find which fuzzers we need to build
  TOOLS=
  while read -r LINE; do
      TOOL_ID=`echo $LINE | sed 's#[^ ]* ##'`
      TOOLS="$TOOLS tools/$TOOL_ID"
  done < "$LIST"
  
  cd ..
  #Build fuzzers
  make -j4 $TOOLS
  
  #Run testcases
  while read -r LINE; do
      TOOL_ID=`echo $LINE | sed 's#[^ ]* ##'`
      FILE=`echo $LINE | sed 's# .*##'`
      if ! test -f "$1/$FILE" ; then
          continue
      fi
      tools/$TOOL_ID $1/$FILE
  done < "tools/$LIST"
  
  echo OK