summaryrefslogtreecommitdiffstats
path: root/bin/reserved-but-public
blob: 8ae56fd01e936f16383352763ebace00241ed727 (plain) (blame)
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
84
85
86
#!/bin/sh

####################
#    Copyright (C) 2011 by Raphael Geissert <geissert@debian.org>
#
#
#    This file 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 3 of the License, or
#    (at your option) any later version.
#
#    This file 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 this file.  If not, see <https://www.gnu.org/licenses/>.
####################

set -eu

list=data/CVE/list

[ -f $list ] || {
    echo "error: $list doesn't exist" >&2
    exit 1
}

verbose=false
if [ "${1:-}" = "--verbose" ]; then
    verbose=true
    shift
fi

regex='*'
if [ -n "${1:-}" ]; then
    regex="${1:-}"
fi

condition=RESERVED
case "$(basename "$0")" in
    reserved-*)
	condition=RESERVED
    ;;
    rejected-*)
	condition=REJECTED
    ;;
esac

condition_seen=false
wanted=false
cve=
while read line; do
    case $line in
	CVE-$regex)
	    cve="$line"
	    condition_seen=false
	    wanted=true
	;;
	CVE-*)
	    cve="$line"
	    condition_seen=false
	    wanted=false
	;;
	*$condition)
	    condition_seen=true
	;;
	*)
	    if ! $condition_seen || ! $wanted; then
		continue
	    fi
	    if [ "$cve" ]; then
		if $verbose; then
		    printf "%s\n" "$cve"
		else
		    printf "%s\n" "$(printf '%s' "$cve" | cut -d\  -f1)"
		fi
		cve=
	    fi
	    if $verbose; then
		printf "\t%s\n" "$line"
	    fi
	;;
    esac
done < "$list"

© 2014-2024 Faster IT GmbH | imprint | privacy policy