Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
security
tomoyo
environ.c
Go to the documentation of this file.
1
/*
2
* security/tomoyo/environ.c
3
*
4
* Copyright (C) 2005-2011 NTT DATA CORPORATION
5
*/
6
7
#include "
common.h
"
8
17
static
bool
tomoyo_check_env_acl(
struct
tomoyo_request_info
*
r
,
18
const
struct
tomoyo_acl_info
*
ptr
)
19
{
20
const
struct
tomoyo_env_acl
*acl =
21
container_of
(ptr,
typeof
(*acl),
head
);
22
23
return
tomoyo_path_matches_pattern
(r->
param
.
environ
.name, acl->
env
);
24
}
25
33
static
int
tomoyo_audit_env_log(
struct
tomoyo_request_info
*r)
34
{
35
return
tomoyo_supervisor
(r,
"misc env %s\n"
,
36
r->
param
.
environ
.name->name);
37
}
38
49
int
tomoyo_env_perm
(
struct
tomoyo_request_info
*r,
const
char
*
env
)
50
{
51
struct
tomoyo_path_info
environ;
52
int
error
;
53
54
if
(!env || !*env)
55
return
0;
56
environ.
name
= env;
57
tomoyo_fill_path_info
(&environ);
58
r->
param_type
=
TOMOYO_TYPE_ENV_ACL
;
59
r->
param
.
environ
.name = &environ;
60
do
{
61
tomoyo_check_acl
(r, tomoyo_check_env_acl);
62
error = tomoyo_audit_env_log(r);
63
}
while
(error ==
TOMOYO_RETRY_REQUEST
);
64
return
error
;
65
}
66
75
static
bool
tomoyo_same_env_acl(
const
struct
tomoyo_acl_info
*
a
,
76
const
struct
tomoyo_acl_info
*
b
)
77
{
78
const
struct
tomoyo_env_acl
*
p1
=
container_of
(a,
typeof
(*p1),
head
);
79
const
struct
tomoyo_env_acl
*p2 =
container_of
(b,
typeof
(*p2),
head
);
80
81
return
p1->
env
== p2->
env
;
82
}
83
93
static
int
tomoyo_write_env(
struct
tomoyo_acl_param
*
param
)
94
{
95
struct
tomoyo_env_acl
e
= { .head.type =
TOMOYO_TYPE_ENV_ACL
};
96
int
error
= -
ENOMEM
;
97
const
char
*
data
=
tomoyo_read_token
(param);
98
99
if
(!
tomoyo_correct_word
(data) ||
strchr
(data,
'='
))
100
return
-
EINVAL
;
101
e.
env
=
tomoyo_get_name
(data);
102
if
(!e.
env
)
103
return
error
;
104
error =
tomoyo_update_domain
(&e.
head
,
sizeof
(e), param,
105
tomoyo_same_env_acl,
NULL
);
106
tomoyo_put_name(e.
env
);
107
return
error
;
108
}
109
117
int
tomoyo_write_misc
(
struct
tomoyo_acl_param
*param)
118
{
119
if
(
tomoyo_str_starts
(¶m->
data
,
"env "
))
120
return
tomoyo_write_env(param);
121
return
-
EINVAL
;
122
}
Generated on Thu Jan 10 2013 15:03:25 for Linux Kernel by
1.8.2