1
+ use std:: env;
2
+ use std:: path:: Path ;
3
+
1
4
use landlock:: {
2
5
path_beneath_rules, Access , AccessFs , Compatible , RulesetAttr , RulesetCreated ,
3
6
RulesetCreatedAttr , ABI ,
4
7
} ;
5
8
9
+ use crate :: rustc_info:: get_cargo_home;
10
+
6
11
/// Base landlock ruleset
7
12
///
8
13
/// This allows access to various essential system locations.
@@ -20,42 +25,29 @@ pub(super) fn base_ruleset() -> RulesetCreated {
20
25
. unwrap ( )
21
26
. add_rules ( path_beneath_rules ( & [ "/tmp" , "/dev/null" ] , access_all) )
22
27
. unwrap ( )
23
- . add_rules ( landlock:: path_beneath_rules (
24
- & [ std:: env:: home_dir ( ) . unwrap ( ) . join ( ".cargo/registry" ) ] ,
25
- access_all,
26
- ) )
27
- . unwrap ( )
28
28
}
29
29
30
30
pub ( super ) fn lock_fetch ( ) {
31
- let abi = landlock :: ABI :: V2 ;
32
- let access_all = landlock :: AccessFs :: from_all ( abi) ;
31
+ let abi = ABI :: V2 ;
32
+ let access_all = AccessFs :: from_all ( abi) ;
33
33
base_ruleset ( )
34
- . add_rules ( landlock:: path_beneath_rules (
35
- & [
36
- std:: env:: current_dir ( ) . unwrap ( ) . join ( "build" ) , // FIXME only enable during ./y.rs build
37
- ] ,
38
- access_all,
39
- ) )
40
- . unwrap ( )
41
- . add_rules ( path_beneath_rules (
42
- [ std:: env:: current_dir ( ) . unwrap ( ) . join ( "download" ) ] ,
43
- access_all,
44
- ) )
34
+ . add_rules ( path_beneath_rules ( [ env:: current_dir ( ) . unwrap ( ) . join ( "download" ) ] , access_all) )
45
35
. unwrap ( )
46
36
. restrict_self ( )
47
37
. unwrap ( ) ;
48
38
}
49
39
50
- pub ( super ) fn lock_build ( ) {
51
- let abi = landlock :: ABI :: V2 ;
52
- let access_all = landlock :: AccessFs :: from_all ( abi) ;
40
+ pub ( super ) fn lock_build ( cargo : & Path ) {
41
+ let abi = ABI :: V2 ;
42
+ let access_all = AccessFs :: from_all ( abi) ;
53
43
base_ruleset ( )
54
- . add_rules ( landlock:: path_beneath_rules (
55
- & [
56
- std:: env:: current_dir ( ) . unwrap ( ) . join ( "build" ) ,
57
- std:: env:: current_dir ( ) . unwrap ( ) . join ( "dist" ) ,
58
- ] ,
44
+ . add_rules ( path_beneath_rules (
45
+ & [ get_cargo_home ( cargo) . join ( "git" ) , get_cargo_home ( cargo) . join ( "registry" ) ] ,
46
+ access_all,
47
+ ) )
48
+ . unwrap ( )
49
+ . add_rules ( path_beneath_rules (
50
+ & [ env:: current_dir ( ) . unwrap ( ) . join ( "build" ) , env:: current_dir ( ) . unwrap ( ) . join ( "dist" ) ] ,
59
51
access_all,
60
52
) )
61
53
. unwrap ( )
0 commit comments