mirror of
https://github.com/xroche/httrack.git
synced 2026-06-28 21:17:57 +03:00
Add filter (-#0) and MIME (-#2) tests, and broaden the charset, entity, IDNA, and path-simplify cases that previously had one or two assertions each. Cover the punycode, charset, and entity parsers (areas with a CVE history) with malformed-input probes that check the hardened build exits cleanly rather than overflowing. The IDNA and path-simplify edge cases are pinned to RFC 3492 and RFC 3986 semantics. The entity case documents the known U+00A0 -> space behavior in htsencoding.c instead of asserting the spec byte, so a future fix is not blocked by a stale test.
27 lines
699 B
Bash
Executable File
27 lines
699 B
Bash
Executable File
#!/bin/bash
|
|
#
|
|
|
|
# path simplify engine (fil_simplifie): collapses ./ and ../ segments.
|
|
simp() {
|
|
test "$(httrack -O /dev/null -#1 "$1")" == "simplified=$2" || exit 1
|
|
}
|
|
|
|
simp './foo/bar/' 'foo/bar/'
|
|
simp './foo/bar' 'foo/bar'
|
|
simp './foo/./bar' 'foo/bar'
|
|
simp './foo/bar/.././tmp/foobar' 'foo/tmp/foobar'
|
|
simp './foo/bar/.././tmp/foobar/../foobaz' 'foo/tmp/foobaz'
|
|
|
|
# single '..' collapses one segment
|
|
simp './a/../b' 'b'
|
|
simp './a/b/../../c' 'c'
|
|
|
|
# repeated './' is squeezed
|
|
simp './a/./././b' 'a/b'
|
|
|
|
# leading '..' that would go above the root is discarded, per RFC 3986 §5.2.4
|
|
simp './a/../../b' 'b'
|
|
|
|
# empty segments ('//') are not dot-segments and are preserved, per RFC 3986
|
|
simp 'a//b' 'a//b'
|