函数逻辑报告 |
Source Code:security\apparmor\domain.c |
Create Date:2022-07-27 21:32:05 |
Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
首页 | 函数Tree |
注解内核,赢得工具 | 下载SCCT | English |
函数名称:aa_change_profile - perform a one-way profile transition*@fqname: name of profile may include namespace (NOT NULL)*@onexec: whether this transition is to take place immediately or at exec*@flags: flags affecting change behavior
函数原型:int aa_change_profile(const char *fqname, int flags)
返回类型:int
参数:
类型 | 参数 | 名称 |
---|---|---|
const char * | fqname | |
int | flags |
1310 | const char * info = NULL |
1312 | stack等于flags按位与AA_CHANGE_STACK |
1314 | error等于0 |
1327 | 如果task_no_new_privs(当前进程)且非unconfined(label)且非nnp则nnp等于aa_get_label(label) |
1335 | 如果flags按位与AA_CHANGE_ONEXEC则 |
1337 | 如果stack则op等于OP_STACK_ONEXEC |
1339 | 否则op等于OP_CHANGE_ONEXEC |
1341 | 否则 |
1351 | 如果fqname恒等于'&'则 |
1356 | target等于aa_label_parse(label, fqname, GFP_KERNEL, true, false) |
1357 | 如果是错误则 |
1360 | info等于"label not found" |
1362 | target = NULL |
1367 | 如果flags按位与AA_CHANGE_TEST或非COMPLAIN_MODE(labels_profile(label))则转到:audit |
1373 | 如果非tprofile则 |
1379 | 转到:check |
1390 | error等于fn_for_each_in_ns(label, profile, change_profile_perms_wrapper(op, auditname, profile, target, stack, request, & perms)) |
1400 | check : |
1403 | 如果error且非fn_for_each_in_ns(label, profile, COMPLAIN_MODE(profile))则转到:audit |
1414 | 如果flags按位与AA_CHANGE_TEST则转到:out |
1418 | 如果非stack则 |
1419 | new等于fn_label_build_in_ns(label, profile, GFP_KERNEL, aa_get_label(target), aa_get_label( & label)) |
1426 | 如果task_no_new_privs(当前进程)且非unconfined(label)且非aa_label_is_subset(new, nnp)则 |
1435 | 如果非flags按位与AA_CHANGE_ONEXEC的值则 |
1439 | 如果是错误或空则 |
1450 | 否则 |
1451 | 如果new则 |
1452 | aa_put_label(new) |
1453 | new = NULL |
1460 | audit : |
1466 | out : |
1467 | aa_put_label(new) |
1468 | aa_put_label(target) |
1469 | aa_put_label(label) |
1471 | 返回:error |
名称 | 描述 |
---|---|
apparmor_setprocattr |
源代码转换工具 开放的插件接口 | X |
---|---|
支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码 |