Commit | Line | Data |
---|---|---|
addf4663 MS |
1 | #!/usr/bin/awk -f |
2 | # SPDX-License-Identifier: GPL-2.0 | |
3 | # | |
4 | # Copyright © 2020, Microsoft Corporation. All rights reserved. | |
5 | # | |
6 | # Author: Mickaël Salaün <mic@linux.microsoft.com> | |
7 | # | |
8 | # Check that a CONFIG_SYSTEM_BLACKLIST_HASH_LIST file contains a valid array of | |
9 | # hash strings. Such string must start with a prefix ("tbs" or "bin"), then a | |
10 | # colon (":"), and finally an even number of hexadecimal lowercase characters | |
11 | # (up to 128). | |
12 | ||
13 | BEGIN { | |
14 | RS = "," | |
15 | } | |
16 | { | |
17 | if (!match($0, "^[ \t\n\r]*\"([^\"]*)\"[ \t\n\r]*$", part1)) { | |
18 | print "Not a string (item " NR "):", $0; | |
19 | exit 1; | |
20 | } | |
21 | if (!match(part1[1], "^(tbs|bin):(.*)$", part2)) { | |
22 | print "Unknown prefix (item " NR "):", part1[1]; | |
23 | exit 1; | |
24 | } | |
25 | if (!match(part2[2], "^([0-9a-f]+)$", part3)) { | |
26 | print "Not a lowercase hexadecimal string (item " NR "):", part2[2]; | |
27 | exit 1; | |
28 | } | |
29 | if (length(part3[1]) > 128) { | |
30 | print "Hash string too long (item " NR "):", part3[1]; | |
31 | exit 1; | |
32 | } | |
33 | if (length(part3[1]) % 2 == 1) { | |
34 | print "Not an even number of hexadecimal characters (item " NR "):", part3[1]; | |
35 | exit 1; | |
36 | } | |
37 | } |