platform_external_selinux/libselinux/man/man3/security_compute_av.3
Stephen Smalley 9eb9c93275 Get rid of security_context_t and fix const declarations.
In attempting to enable building various part of Android with -Wall -Werror,
we found that the const security_context_t declarations in libselinux
are incorrect; const char * was intended, but const security_context_t
translates to char * const and triggers warnings on passing
const char * from the caller.   Easiest fix is to replace them all with
const char *.  And while we are at it, just get rid of all usage of
security_context_t itself as it adds no value - there is no true
encapsulation of the security context strings and callers already
directly use string functions on them.  typedef left to permit
building legacy users until such a time as all are updated.

This is a port of Change-Id I2f9df7bb9f575f76024c3e5f5b660345da2931a7
from Android, augmented to deal with all of the other code in upstream
libselinux and updating the man pages too.

Signed-off-by: Stephen Smalley <sds@tycho.nsa.gov>
Acked-by: Eric Paris <eparis@redhat.com>
2014-02-19 16:11:48 -05:00

140 lines
5.4 KiB
Groff

.TH "security_compute_av" "3" "1 January 2004" "russell@coker.com.au" "SELinux API documentation"
.SH "NAME"
security_compute_av, security_compute_av_flags, security_compute_create, security_compute_create_name, security_compute_relabel,
security_compute_member, security_compute_user, security_get_initial_context \- query
the SELinux policy database in the kernel
.
.SH "SYNOPSIS"
.B #include <selinux/selinux.h>
.br
.B #include <selinux/flask.h>
.sp
.BI "int security_compute_av(char * "scon ", char * "tcon ", security_class_t "tclass ", access_vector_t "requested ", struct av_decision *" avd );
.sp
.BI "int security_compute_av_raw(char * "scon ", char * "tcon ", security_class_t "tclass ", access_vector_t "requested ", struct av_decision *" avd );
.sp
.BI "int security_compute_av_flags(char * "scon ", char * "tcon ", security_class_t "tclass ", access_vector_t "requested ", struct av_decision *" avd );
.sp
.BI "int security_compute_av_flags_raw(char * "scon ", char * "tcon ", security_class_t "tclass ", access_vector_t "requested ", struct av_decision *" avd );
.sp
.BI "int security_compute_create(char * "scon ", char * "tcon ", security_class_t "tclass ", char **" newcon );
.sp
.BI "int security_compute_create_raw(char * "scon ", char * "tcon ", security_class_t "tclass ", char **" newcon );
.sp
.BI "int security_compute_create_name(char * "scon ", char * "tcon ", security_class_t "tclass ", const char *"objname ", char **" newcon );
.sp
.BI "int security_compute_create_name_raw(char * "scon ", char * "tcon ", security_class_t "tclass ", const char *"objname ", char **" newcon );
.sp
.BI "int security_compute_relabel(char * "scon ", char * "tcon ", security_class_t "tclass ", char **" newcon );
.sp
.BI "int security_compute_relabel_raw(char * "scon ", char * "tcon ", security_class_t "tclass ", char **" newcon );
.sp
.BI "int security_compute_member(char * "scon ", char * "tcon ", security_class_t "tclass ", char **" newcon );
.sp
.BI "int security_compute_member_raw(char * "scon ", char * "tcon ", security_class_t "tclass ", char **" newcon );
.sp
.BI "int security_compute_user(char * "scon ", const char *" username ", char ***" con );
.sp
.BI "int security_compute_user_raw(char * "scon ", const char *" username ", char ***" con );
.sp
.BI "int security_get_initial_context(const char *" name ", char **" con );
.sp
.BI "int security_get_initial_context_raw(const char *" name ", char **" con );
.sp
.BI "int selinux_check_access(const char * " scon ", const char * " tcon ", const char *" class ", const char *" perm ", void *" auditdata);
.sp
.BI "int selinux_check_passwd_access(access_vector_t " requested );
.sp
.BI "int checkPasswdAccess(access_vector_t " requested );
.
.SH "DESCRIPTION"
.BR security_compute_av ()
queries whether the policy permits the source context
.I scon
to access the target context
.I tcon
via class
.I tclass
with the
.I requested
access vector. The decision is returned in
.IR avd .
.BR security_compute_av_flags ()
is identical to
.B security_compute_av
but additionally sets the
.I flags
field of
.IR avd .
Currently one flag is supported:
.BR SELINUX_AVD_FLAGS_PERMISSIVE ,
which indicates the decision is computed on a permissive domain.
.BR security_compute_create ()
is used to compute a context to use for labeling a new object in a particular
class based on a SID pair.
.BR security_compute_create_name ()
is identical to
.BR \%security_compute_create ()
but also takes name of the new object in creation as an argument.
When
.B TYPE_TRANSITION
rule on the given class and a SID pair has object name extension,
we shall be able to obtain a correct
.I newcon
according to the security policy. Note that this interface is only
supported on the linux 2.6.40 or later.
In the older kernel, the object name will be simply ignored.
.BR security_compute_relabel ()
is used to compute the new context to use when relabeling an object, it is used
in the pam_selinux.so source and the newrole source to determine the correct
label for the tty at login time, but can be used for other things.
.BR security_compute_member ()
is used to compute the context to use when labeling a polyinstantiated object
instance.
.BR security_compute_user ()
is used to determine the set of user contexts that can be reached from a
source context. It is mainly used by
.BR get_ordered_context_list ().
.BR security_get_initial_context ()
is used to get the context of a kernel initial security identifier specified by
.I name
.BR security_compute_av_raw (),
.BR security_compute_av_flags_raw (),
.BR \%security_compute_create_raw (),
.BR \%security_compute_create_name_raw (),
.BR \%security_compute_relabel_raw (),
.BR \%security_compute_member_raw (),
.BR \%security_compute_user_raw ()
and
.BR \%security_get_initial_context_raw ()
behave identically to their non-raw counterparts but do not perform context
translation.
.BR selinux_check_access ()
is used to check if the source context has the access permission for the specified class on the target context.
.BR selinux_check_passwd_access ()
is used to check for a permission in the
.I passwd
class.
.BR selinux_check_passwd_access ()
uses getprevcon() for the source and target security contexts.
.BR checkPasswdAccess ()
is a deprecated alias of the
.BR selinux_check_passwd_access ()
function.
.
.SH "RETURN VALUE"
Returns zero on success or \-1 on error.
.
.SH "SEE ALSO"
.BR selinux "(8), " getcon "(3), " getfilecon "(3), " get_ordered_context_list "(3)"