File: path.t

package info (click to toggle)
lintian 2.5.10.4
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 12,608 kB
  • sloc: perl: 12,430; sh: 5,787; makefile: 2,834; xml: 1,125; ansic: 347; python: 28; java: 9; tcl: 4; sed: 3
file content (26 lines) | stat: -rw-r--r-- 1,317 bytes parent folder | download
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
#!/usr/bin/perl

use strict;
use warnings;
use Test::More tests => 12;

# Lintian::Util exports fail, which clashes with Test::More, so we
# have to be explicit about the import(s).
BEGIN { use_ok('Lintian::Util', qw(resolve_pkg_path)); }

# Safe - absolute
is(resolve_pkg_path('/usr/share/java', '/usr/share/ant/file'), 'usr/share/ant/file', 'Safe absolute path');
is(resolve_pkg_path('/usr/share/ant', '/'), '.', 'Safe absolute root');

# Safe - relative
is(resolve_pkg_path('/usr/share/java', './file'), 'usr/share/java/file', 'Safe simple same-dir path');
is(resolve_pkg_path('/usr/share/java', '../ant/file'), 'usr/share/ant/file', 'Safe simple relative path');
is(resolve_pkg_path('/usr/share/java', '../../../usr/share/ant/file'), 'usr/share/ant/file', 'Safe absurd relative path');
is(resolve_pkg_path('/usr/share/java', '.'), 'usr/share/java', 'Safe relative dot path');
is(resolve_pkg_path('/', '.'), '.', 'Safe relative root dot');
is(resolve_pkg_path('/', 'usr/..'), '.', 'Safe absurd relative root path');
is(resolve_pkg_path('/usr/share/java', '../../../'), '.', 'Safe absurd relative path to root');

# Unsafe
ok(!resolve_pkg_path('/usr/share/ant', '../../../../etc/passwd'), 'Unsafe - relative escape root');
ok(!resolve_pkg_path('/usr/share/ant', '/../etc/passwd'), 'Unsafe - absolute escape root');