Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
3b0aaf58
R
raspberrypi-kernel
项目概览
openeuler
/
raspberrypi-kernel
通知
13
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
raspberrypi-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
3b0aaf58
编写于
1月 16, 2017
作者:
J
John Johansen
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
apparmor: add lib fn to find the "split" for fqnames
Signed-off-by:
N
John Johansen
<
john.johansen@canonical.com
>
上级
9a2d40c1
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
55 addition
and
0 deletion
+55
-0
security/apparmor/include/lib.h
security/apparmor/include/lib.h
+2
-0
security/apparmor/lib.c
security/apparmor/lib.c
+53
-0
未找到文件。
security/apparmor/include/lib.h
浏览文件 @
3b0aaf58
...
...
@@ -38,6 +38,8 @@ extern int apparmor_initialized __initdata;
/* fn's in lib */
char
*
aa_split_fqname
(
char
*
args
,
char
**
ns_name
);
const
char
*
aa_splitn_fqname
(
const
char
*
fqname
,
size_t
n
,
const
char
**
ns_name
,
size_t
*
ns_len
);
void
aa_info_message
(
const
char
*
str
);
void
*
__aa_kvmalloc
(
size_t
size
,
gfp_t
flags
);
...
...
security/apparmor/lib.c
浏览文件 @
3b0aaf58
...
...
@@ -12,6 +12,7 @@
* License.
*/
#include <linux/ctype.h>
#include <linux/mm.h>
#include <linux/slab.h>
#include <linux/string.h>
...
...
@@ -60,6 +61,58 @@ char *aa_split_fqname(char *fqname, char **ns_name)
return
name
;
}
/**
* skipn_spaces - Removes leading whitespace from @str.
* @str: The string to be stripped.
*
* Returns a pointer to the first non-whitespace character in @str.
* if all whitespace will return NULL
*/
static
const
char
*
skipn_spaces
(
const
char
*
str
,
size_t
n
)
{
for
(;
n
&&
isspace
(
*
str
);
--
n
)
++
str
;
if
(
n
)
return
(
char
*
)
str
;
return
NULL
;
}
const
char
*
aa_splitn_fqname
(
const
char
*
fqname
,
size_t
n
,
const
char
**
ns_name
,
size_t
*
ns_len
)
{
const
char
*
end
=
fqname
+
n
;
const
char
*
name
=
skipn_spaces
(
fqname
,
n
);
if
(
!
name
)
return
NULL
;
*
ns_name
=
NULL
;
*
ns_len
=
0
;
if
(
name
[
0
]
==
':'
)
{
char
*
split
=
strnchr
(
&
name
[
1
],
end
-
&
name
[
1
],
':'
);
*
ns_name
=
skipn_spaces
(
&
name
[
1
],
end
-
&
name
[
1
]);
if
(
!*
ns_name
)
return
NULL
;
if
(
split
)
{
*
ns_len
=
split
-
*
ns_name
;
if
(
*
ns_len
==
0
)
*
ns_name
=
NULL
;
split
++
;
if
(
end
-
split
>
1
&&
strncmp
(
split
,
"//"
,
2
)
==
0
)
split
+=
2
;
name
=
skipn_spaces
(
split
,
end
-
split
);
}
else
{
/* a ns name without a following profile is allowed */
name
=
NULL
;
*
ns_len
=
end
-
*
ns_name
;
}
}
if
(
name
&&
*
name
==
0
)
name
=
NULL
;
return
name
;
}
/**
* aa_info_message - log a none profile related status message
* @str: message to log
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录