Skip to content

Commit ea6c116

Browse files
committed
comments
1 parent 3329f94 commit ea6c116

2 files changed

Lines changed: 35 additions & 12 deletions

File tree

private/util/validate_usr_symlinks.awk

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,29 @@ BEGIN {
22
# Mapping from root-level path to expected symlink destination.
33
# https://github.com/floppym/merge-usr/blob/15dd02207bdee7ca6720d7024e8c0ffdc166ed23/merge-usr#L17-L25
44
# Note: Debian does NOT merge /usr/sbin into /usr/bin, so /sbin -> usr/sbin.
5-
expected["./bin"] = "usr/bin"
6-
expected["./sbin"] = "usr/sbin"
7-
expected["./lib"] = "usr/lib"
8-
expected["./lib32"] = "usr/lib32"
9-
expected["./lib64"] = "usr/lib64"
10-
expected["./libx32"] = "usr/libx32"
11-
prefixes = "./bin|./sbin|./lib|./lib32|./lib64|./libx32"
5+
expected["bin"] = "usr/bin"
6+
expected["sbin"] = "usr/sbin"
7+
expected["lib"] = "usr/lib"
8+
expected["lib32"] = "usr/lib32"
9+
expected["lib64"] = "usr/lib64"
10+
expected["libx32"] = "usr/libx32"
11+
prefixes = "bin|sbin|lib|lib32|lib64|libx32"
1212
}
1313
{
14-
path = $1
14+
original_path = $1
15+
path = original_path
16+
# Normalize: strip leading ./ or /
17+
sub(/^\.\//, "", path)
18+
sub(/^\//, "", path)
19+
1520
if (path in expected) {
1621
if ($0 !~ /type=link/) {
17-
VIOLATIONS[path] = path " is not a symlink (must link to " expected[path] ")"
22+
VIOLATIONS[original_path] = original_path " is not a symlink (must link to " expected[path] ")"
1823
} else if (match($0, / link=([^ \t]+)/, dest) && dest[1] != expected[path]) {
19-
VIOLATIONS[path] = path " symlinks to '" dest[1] "' instead of '" expected[path] "'"
24+
VIOLATIONS[original_path] = original_path " symlinks to '" dest[1] "' instead of '" expected[path] "'"
2025
}
21-
} else if ($0 ~ ("^(" prefixes ")/")) {
22-
VIOLATIONS[path] = path " found under a merged-usr symlink path (should not exist)"
26+
} else if (path ~ ("^(" prefixes ")/")) {
27+
VIOLATIONS[original_path] = original_path " found under a merged-usr symlink path (should not exist)"
2328
}
2429
}
2530
END {

private/util/validate_usr_symlinks_test.sh

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,12 @@ fail() { echo "FAIL: $*" >&2; exit 1; }
2121
run "./bin type=link mode=0777 nlink=1 uid=0 gid=0 link=usr/bin" \
2222
|| fail "./bin -> usr/bin should pass"
2323

24+
run "/bin type=link mode=0777 nlink=1 uid=0 gid=0 link=usr/bin" \
25+
|| fail "/bin -> usr/bin should pass"
26+
27+
run "bin type=link mode=0777 nlink=1 uid=0 gid=0 link=usr/bin" \
28+
|| fail "bin -> usr/bin should pass"
29+
2430
run "./sbin type=link mode=0777 nlink=1 uid=0 gid=0 link=usr/sbin" \
2531
|| fail "./sbin -> usr/sbin should pass"
2632

@@ -45,12 +51,24 @@ run "./bin type=dir mode=0755 nlink=2 uid=0 gid=0" \
4551
run "./bin type=link mode=0777 nlink=1 uid=0 gid=0 link=usr/sbin" \
4652
&& fail "./bin -> usr/sbin should fail" || true
4753

54+
run "bin type=link mode=0777 nlink=1 uid=0 gid=0 link=usr/fin" \
55+
&& fail "bin -> usr/fin should fail" || true
56+
57+
run "/bin type=link mode=0777 nlink=1 uid=0 gid=0 link=usr/fin" \
58+
&& fail "/bin -> usr/fin should fail" || true
59+
4860
run "./sbin type=link mode=0777 nlink=1 uid=0 gid=0 link=usr/bin" \
4961
&& fail "./sbin -> usr/bin should fail (Debian keeps sbin separate)" || true
5062

5163
run "./lib/libfoo.so.1 type=file mode=0644 nlink=1 uid=0 gid=0 size=4096" \
5264
&& fail "content under ./lib/ should fail" || true
5365

66+
run "lib/libfoo.so.1 type=file mode=0644 nlink=1 uid=0 gid=0 size=4096" \
67+
&& fail "content under lib/ should fail" || true
68+
69+
run "/lib/libfoo.so.1 type=file mode=0644 nlink=1 uid=0 gid=0 size=4096" \
70+
&& fail "content under /lib/ should fail" || true
71+
5472
run "./bin/ls type=file mode=0755 nlink=1 uid=0 gid=0 size=12345" \
5573
&& fail "content under ./bin/ should fail" || true
5674

0 commit comments

Comments
 (0)