TOMOYO: Allow domain transition without execve().
To be able to split permissions for Apache's CGI programs which are executed without execve(), add special domain transition which is performed by writing a TOMOYO's domainname to /sys/kernel/security/tomoyo/self_domain interface. This is an API for TOMOYO-aware userland applications. However, since I expect TOMOYO and other LSM modules to run in parallel, this patch does not use /proc/self/attr/ interface in order to avoid conflicts with other LSM modules when it became possible to run multiple LSM modules in parallel. Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> Signed-off-by: James Morris <jmorris@namei.org>
This commit is contained in:

committed by
James Morris

parent
1f067a682a
commit
731d37aa70
@@ -158,6 +158,31 @@ char *tomoyo_read_token(struct tomoyo_acl_param *param)
|
||||
return pos;
|
||||
}
|
||||
|
||||
/**
|
||||
* tomoyo_get_domainname - Read a domainname from a line.
|
||||
*
|
||||
* @param: Pointer to "struct tomoyo_acl_param".
|
||||
*
|
||||
* Returns a domainname on success, NULL otherwise.
|
||||
*/
|
||||
const struct tomoyo_path_info *tomoyo_get_domainname
|
||||
(struct tomoyo_acl_param *param)
|
||||
{
|
||||
char *start = param->data;
|
||||
char *pos = start;
|
||||
while (*pos) {
|
||||
if (*pos++ != ' ' || *pos++ == '/')
|
||||
continue;
|
||||
pos -= 2;
|
||||
*pos++ = '\0';
|
||||
break;
|
||||
}
|
||||
param->data = pos;
|
||||
if (tomoyo_correct_domain(start))
|
||||
return tomoyo_get_name(start);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* tomoyo_parse_ulong - Parse an "unsigned long" value.
|
||||
*
|
||||
|
Reference in New Issue
Block a user