TOMOYO: Remove wrapper function for reading keyword.
Keyword strings are read-only. We can directly access them to reduce code size. 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:
parent
d795ef9e75
commit
71c282362d
3 changed files with 14 additions and 70 deletions
|
@ -812,7 +812,7 @@ static bool tomoyo_print_path_acl(struct tomoyo_io_buffer *head,
|
||||||
continue;
|
continue;
|
||||||
pos = head->read_avail;
|
pos = head->read_avail;
|
||||||
if (!tomoyo_io_printf(head, "allow_%s ",
|
if (!tomoyo_io_printf(head, "allow_%s ",
|
||||||
tomoyo_path2keyword(bit)) ||
|
tomoyo_path_keyword[bit]) ||
|
||||||
!tomoyo_print_name_union(head, &ptr->name) ||
|
!tomoyo_print_name_union(head, &ptr->name) ||
|
||||||
!tomoyo_io_printf(head, "\n"))
|
!tomoyo_io_printf(head, "\n"))
|
||||||
goto out;
|
goto out;
|
||||||
|
@ -845,7 +845,7 @@ static bool tomoyo_print_path2_acl(struct tomoyo_io_buffer *head,
|
||||||
continue;
|
continue;
|
||||||
pos = head->read_avail;
|
pos = head->read_avail;
|
||||||
if (!tomoyo_io_printf(head, "allow_%s ",
|
if (!tomoyo_io_printf(head, "allow_%s ",
|
||||||
tomoyo_path22keyword(bit)) ||
|
tomoyo_path2_keyword[bit]) ||
|
||||||
!tomoyo_print_name_union(head, &ptr->name1) ||
|
!tomoyo_print_name_union(head, &ptr->name1) ||
|
||||||
!tomoyo_print_name_union(head, &ptr->name2) ||
|
!tomoyo_print_name_union(head, &ptr->name2) ||
|
||||||
!tomoyo_io_printf(head, "\n"))
|
!tomoyo_io_printf(head, "\n"))
|
||||||
|
@ -879,7 +879,7 @@ static bool tomoyo_print_path_number_acl(struct tomoyo_io_buffer *head,
|
||||||
continue;
|
continue;
|
||||||
pos = head->read_avail;
|
pos = head->read_avail;
|
||||||
if (!tomoyo_io_printf(head, "allow_%s",
|
if (!tomoyo_io_printf(head, "allow_%s",
|
||||||
tomoyo_path_number2keyword(bit)) ||
|
tomoyo_path_number_keyword[bit]) ||
|
||||||
!tomoyo_print_name_union(head, &ptr->name) ||
|
!tomoyo_print_name_union(head, &ptr->name) ||
|
||||||
!tomoyo_print_number_union(head, &ptr->number) ||
|
!tomoyo_print_number_union(head, &ptr->number) ||
|
||||||
!tomoyo_io_printf(head, "\n"))
|
!tomoyo_io_printf(head, "\n"))
|
||||||
|
@ -913,7 +913,7 @@ static bool tomoyo_print_mkdev_acl(struct tomoyo_io_buffer *head,
|
||||||
continue;
|
continue;
|
||||||
pos = head->read_avail;
|
pos = head->read_avail;
|
||||||
if (!tomoyo_io_printf(head, "allow_%s",
|
if (!tomoyo_io_printf(head, "allow_%s",
|
||||||
tomoyo_mkdev2keyword(bit)) ||
|
tomoyo_mkdev_keyword[bit]) ||
|
||||||
!tomoyo_print_name_union(head, &ptr->name) ||
|
!tomoyo_print_name_union(head, &ptr->name) ||
|
||||||
!tomoyo_print_number_union(head, &ptr->mode) ||
|
!tomoyo_print_number_union(head, &ptr->mode) ||
|
||||||
!tomoyo_print_number_union(head, &ptr->major) ||
|
!tomoyo_print_number_union(head, &ptr->major) ||
|
||||||
|
|
|
@ -804,14 +804,8 @@ bool tomoyo_read_no_rewrite_policy(struct tomoyo_io_buffer *head);
|
||||||
bool tomoyo_tokenize(char *buffer, char *w[], size_t size);
|
bool tomoyo_tokenize(char *buffer, char *w[], size_t size);
|
||||||
/* Write domain policy violation warning message to console? */
|
/* Write domain policy violation warning message to console? */
|
||||||
bool tomoyo_verbose_mode(const struct tomoyo_domain_info *domain);
|
bool tomoyo_verbose_mode(const struct tomoyo_domain_info *domain);
|
||||||
/* Convert double path operation to operation name. */
|
|
||||||
const char *tomoyo_path22keyword(const u8 operation);
|
|
||||||
const char *tomoyo_path_number2keyword(const u8 operation);
|
|
||||||
const char *tomoyo_mkdev2keyword(const u8 operation);
|
|
||||||
/* Get the last component of the given domainname. */
|
/* Get the last component of the given domainname. */
|
||||||
const char *tomoyo_get_last_name(const struct tomoyo_domain_info *domain);
|
const char *tomoyo_get_last_name(const struct tomoyo_domain_info *domain);
|
||||||
/* Convert single path operation to operation name. */
|
|
||||||
const char *tomoyo_path2keyword(const u8 operation);
|
|
||||||
/* Fill "struct tomoyo_request_info". */
|
/* Fill "struct tomoyo_request_info". */
|
||||||
int tomoyo_init_request_info(struct tomoyo_request_info *r,
|
int tomoyo_init_request_info(struct tomoyo_request_info *r,
|
||||||
struct tomoyo_domain_info *domain,
|
struct tomoyo_domain_info *domain,
|
||||||
|
@ -985,6 +979,11 @@ extern bool tomoyo_policy_loaded;
|
||||||
/* The kernel's domain. */
|
/* The kernel's domain. */
|
||||||
extern struct tomoyo_domain_info tomoyo_kernel_domain;
|
extern struct tomoyo_domain_info tomoyo_kernel_domain;
|
||||||
|
|
||||||
|
extern const char *tomoyo_path_keyword[TOMOYO_MAX_PATH_OPERATION];
|
||||||
|
extern const char *tomoyo_mkdev_keyword[TOMOYO_MAX_MKDEV_OPERATION];
|
||||||
|
extern const char *tomoyo_path2_keyword[TOMOYO_MAX_PATH2_OPERATION];
|
||||||
|
extern const char *tomoyo_path_number_keyword[TOMOYO_MAX_PATH_NUMBER_OPERATION];
|
||||||
|
|
||||||
extern unsigned int tomoyo_quota_for_query;
|
extern unsigned int tomoyo_quota_for_query;
|
||||||
extern unsigned int tomoyo_query_memory_size;
|
extern unsigned int tomoyo_query_memory_size;
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
|
|
||||||
/* Keyword array for operations with one pathname. */
|
/* Keyword array for operations with one pathname. */
|
||||||
static const char *tomoyo_path_keyword[TOMOYO_MAX_PATH_OPERATION] = {
|
const char *tomoyo_path_keyword[TOMOYO_MAX_PATH_OPERATION] = {
|
||||||
[TOMOYO_TYPE_READ_WRITE] = "read/write",
|
[TOMOYO_TYPE_READ_WRITE] = "read/write",
|
||||||
[TOMOYO_TYPE_EXECUTE] = "execute",
|
[TOMOYO_TYPE_EXECUTE] = "execute",
|
||||||
[TOMOYO_TYPE_READ] = "read",
|
[TOMOYO_TYPE_READ] = "read",
|
||||||
|
@ -25,22 +25,20 @@ static const char *tomoyo_path_keyword[TOMOYO_MAX_PATH_OPERATION] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Keyword array for operations with one pathname and three numbers. */
|
/* Keyword array for operations with one pathname and three numbers. */
|
||||||
static const char *tomoyo_mkdev_keyword
|
const char *tomoyo_mkdev_keyword[TOMOYO_MAX_MKDEV_OPERATION] = {
|
||||||
[TOMOYO_MAX_MKDEV_OPERATION] = {
|
|
||||||
[TOMOYO_TYPE_MKBLOCK] = "mkblock",
|
[TOMOYO_TYPE_MKBLOCK] = "mkblock",
|
||||||
[TOMOYO_TYPE_MKCHAR] = "mkchar",
|
[TOMOYO_TYPE_MKCHAR] = "mkchar",
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Keyword array for operations with two pathnames. */
|
/* Keyword array for operations with two pathnames. */
|
||||||
static const char *tomoyo_path2_keyword[TOMOYO_MAX_PATH2_OPERATION] = {
|
const char *tomoyo_path2_keyword[TOMOYO_MAX_PATH2_OPERATION] = {
|
||||||
[TOMOYO_TYPE_LINK] = "link",
|
[TOMOYO_TYPE_LINK] = "link",
|
||||||
[TOMOYO_TYPE_RENAME] = "rename",
|
[TOMOYO_TYPE_RENAME] = "rename",
|
||||||
[TOMOYO_TYPE_PIVOT_ROOT] = "pivot_root",
|
[TOMOYO_TYPE_PIVOT_ROOT] = "pivot_root",
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Keyword array for operations with one pathname and one number. */
|
/* Keyword array for operations with one pathname and one number. */
|
||||||
static const char *tomoyo_path_number_keyword
|
const char *tomoyo_path_number_keyword[TOMOYO_MAX_PATH_NUMBER_OPERATION] = {
|
||||||
[TOMOYO_MAX_PATH_NUMBER_OPERATION] = {
|
|
||||||
[TOMOYO_TYPE_CREATE] = "create",
|
[TOMOYO_TYPE_CREATE] = "create",
|
||||||
[TOMOYO_TYPE_MKDIR] = "mkdir",
|
[TOMOYO_TYPE_MKDIR] = "mkdir",
|
||||||
[TOMOYO_TYPE_MKFIFO] = "mkfifo",
|
[TOMOYO_TYPE_MKFIFO] = "mkfifo",
|
||||||
|
@ -119,58 +117,6 @@ bool tomoyo_compare_number_union(const unsigned long value,
|
||||||
return value >= ptr->values[0] && value <= ptr->values[1];
|
return value >= ptr->values[0] && value <= ptr->values[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* tomoyo_path2keyword - Get the name of single path operation.
|
|
||||||
*
|
|
||||||
* @operation: Type of operation.
|
|
||||||
*
|
|
||||||
* Returns the name of single path operation.
|
|
||||||
*/
|
|
||||||
const char *tomoyo_path2keyword(const u8 operation)
|
|
||||||
{
|
|
||||||
return (operation < TOMOYO_MAX_PATH_OPERATION)
|
|
||||||
? tomoyo_path_keyword[operation] : NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* tomoyo_mkdev2keyword - Get the name of path/number/number/number operations.
|
|
||||||
*
|
|
||||||
* @operation: Type of operation.
|
|
||||||
*
|
|
||||||
* Returns the name of path/number/number/number operation.
|
|
||||||
*/
|
|
||||||
const char *tomoyo_mkdev2keyword(const u8 operation)
|
|
||||||
{
|
|
||||||
return (operation < TOMOYO_MAX_MKDEV_OPERATION)
|
|
||||||
? tomoyo_mkdev_keyword[operation] : NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* tomoyo_path22keyword - Get the name of double path operation.
|
|
||||||
*
|
|
||||||
* @operation: Type of operation.
|
|
||||||
*
|
|
||||||
* Returns the name of double path operation.
|
|
||||||
*/
|
|
||||||
const char *tomoyo_path22keyword(const u8 operation)
|
|
||||||
{
|
|
||||||
return (operation < TOMOYO_MAX_PATH2_OPERATION)
|
|
||||||
? tomoyo_path2_keyword[operation] : NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* tomoyo_path_number2keyword - Get the name of path/number operations.
|
|
||||||
*
|
|
||||||
* @operation: Type of operation.
|
|
||||||
*
|
|
||||||
* Returns the name of path/number operation.
|
|
||||||
*/
|
|
||||||
const char *tomoyo_path_number2keyword(const u8 operation)
|
|
||||||
{
|
|
||||||
return (operation < TOMOYO_MAX_PATH_NUMBER_OPERATION)
|
|
||||||
? tomoyo_path_number_keyword[operation] : NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void tomoyo_add_slash(struct tomoyo_path_info *buf)
|
static void tomoyo_add_slash(struct tomoyo_path_info *buf)
|
||||||
{
|
{
|
||||||
if (buf->is_dir)
|
if (buf->is_dir)
|
||||||
|
@ -266,8 +212,7 @@ static int tomoyo_audit_path2_log(struct tomoyo_request_info *r)
|
||||||
*/
|
*/
|
||||||
static int tomoyo_audit_mkdev_log(struct tomoyo_request_info *r)
|
static int tomoyo_audit_mkdev_log(struct tomoyo_request_info *r)
|
||||||
{
|
{
|
||||||
const char *operation = tomoyo_mkdev2keyword(r->param.mkdev.
|
const char *operation = tomoyo_mkdev_keyword[r->param.mkdev.operation];
|
||||||
operation);
|
|
||||||
const struct tomoyo_path_info *filename = r->param.mkdev.filename;
|
const struct tomoyo_path_info *filename = r->param.mkdev.filename;
|
||||||
const unsigned int major = r->param.mkdev.major;
|
const unsigned int major = r->param.mkdev.major;
|
||||||
const unsigned int minor = r->param.mkdev.minor;
|
const unsigned int minor = r->param.mkdev.minor;
|
||||||
|
|
Loading…
Add table
Reference in a new issue