# Copyright 2018 syzkaller project authors. All rights reserved. # Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file. resource fd_apparmor_current[fd] openat$apparmor_task_current(fd const[AT_FDCWD], file ptr[in, string["/proc/self/attr/current"]], flags const[O_RDWR], mode const[0]) fd_apparmor_current openat$apparmor_thread_current(fd const[AT_FDCWD], file ptr[in, string["/proc/thread-self/attr/current"]], flags const[O_RDWR], mode const[0]) fd_apparmor_current write$apparmor_current(fd fd_apparmor_current, data ptr[in, apparmor_current_attr], len len[data]) apparmor_current_attr [ hat apparmor_current_hat profile apparmor_current_profile ] [varlen] apparmor_current_hat { cmd stringnoz[apparmor_hat_cmds] token fmt[hex, int64[0:4]] delim const['^', int8] # TODO: what are these hats? should we pass some strings from apparmor profile? hats array[string] } [packed] apparmor_hat_cmds = "changehat ", "permhat " apparmor_current_profile { cmd stringnoz[apparmor_profile_cmds] # TODO: what is this profile/fqname? profile string } [packed] apparmor_profile_cmds = "changeprofile ", "permprofile ", "stack " resource fd_apparmor_exec[fd] openat$apparmor_task_exec(fd const[AT_FDCWD], file ptr[in, string["/proc/self/attr/exec"]], flags const[O_RDWR], mode const[0]) fd_apparmor_exec openat$apparmor_thread_exec(fd const[AT_FDCWD], file ptr[in, string["/proc/thread-self/attr/exec"]], flags const[O_RDWR], mode const[0]) fd_apparmor_exec write$apparmor_exec(fd fd_apparmor_exec, data ptr[in, apparmor_exec_attr], len len[data]) apparmor_exec_attr { cmd stringnoz[apparmor_exec_profile_cmds] # TODO: what is this profile/fqname? profile string } [packed] apparmor_exec_profile_cmds = "exec ", "stack "