selinux: Delete mls_copy_context

This deletes mls_copy_context() in favor of mls_context_cpy() and
replaces mls_scopy_context() with mls_context_cpy_low().

Signed-off-by: Venkat Yekkirala <vyekkirala@TrustedCS.com>
Acked-by:  Stephen Smalley <sds@tycho.nsa.gov>
Signed-off-by: James Morris <jmorris@namei.org>
This commit is contained in:
Venkat Yekkirala 2006-12-12 13:02:41 -06:00 committed by James Morris
parent bf81b46482
commit 0efc61eaee
4 changed files with 29 additions and 47 deletions

View file

@ -55,6 +55,29 @@ out:
return rc; return rc;
} }
/*
* Sets both levels in the MLS range of 'dst' to the low level of 'src'.
*/
static inline int mls_context_cpy_low(struct context *dst, struct context *src)
{
int rc;
if (!selinux_mls_enabled)
return 0;
dst->range.level[0].sens = src->range.level[0].sens;
rc = ebitmap_cpy(&dst->range.level[0].cat, &src->range.level[0].cat);
if (rc)
goto out;
dst->range.level[1].sens = src->range.level[0].sens;
rc = ebitmap_cpy(&dst->range.level[1].cat, &src->range.level[0].cat);
if (rc)
ebitmap_destroy(&dst->range.level[0].cat);
out:
return rc;
}
static inline int mls_context_cmp(struct context *c1, struct context *c2) static inline int mls_context_cmp(struct context *c1, struct context *c2)
{ {
if (!selinux_mls_enabled) if (!selinux_mls_enabled)

View file

@ -270,7 +270,7 @@ int mls_context_to_sid(char oldc,
if (!defcon) if (!defcon)
goto out; goto out;
rc = mls_copy_context(context, defcon); rc = mls_context_cpy(context, defcon);
goto out; goto out;
} }
@ -400,26 +400,6 @@ int mls_from_string(char *str, struct context *context, gfp_t gfp_mask)
return rc; return rc;
} }
/*
* Copies the effective MLS range from `src' into `dst'.
*/
static inline int mls_scopy_context(struct context *dst,
struct context *src)
{
int l, rc = 0;
/* Copy the MLS range from the source context */
for (l = 0; l < 2; l++) {
dst->range.level[l].sens = src->range.level[0].sens;
rc = ebitmap_cpy(&dst->range.level[l].cat,
&src->range.level[0].cat);
if (rc)
break;
}
return rc;
}
/* /*
* Copies the MLS range `range' into `context'. * Copies the MLS range `range' into `context'.
*/ */
@ -552,19 +532,19 @@ int mls_compute_sid(struct context *scontext,
case AVTAB_CHANGE: case AVTAB_CHANGE:
if (tclass == SECCLASS_PROCESS) if (tclass == SECCLASS_PROCESS)
/* Use the process MLS attributes. */ /* Use the process MLS attributes. */
return mls_copy_context(newcontext, scontext); return mls_context_cpy(newcontext, scontext);
else else
/* Use the process effective MLS attributes. */ /* Use the process effective MLS attributes. */
return mls_scopy_context(newcontext, scontext); return mls_context_cpy_low(newcontext, scontext);
case AVTAB_MEMBER: case AVTAB_MEMBER:
/* Only polyinstantiate the MLS attributes if /* Only polyinstantiate the MLS attributes if
the type is being polyinstantiated */ the type is being polyinstantiated */
if (newcontext->type != tcontext->type) { if (newcontext->type != tcontext->type) {
/* Use the process effective MLS attributes. */ /* Use the process effective MLS attributes. */
return mls_scopy_context(newcontext, scontext); return mls_context_cpy_low(newcontext, scontext);
} else { } else {
/* Use the related object MLS attributes. */ /* Use the related object MLS attributes. */
return mls_copy_context(newcontext, tcontext); return mls_context_cpy(newcontext, tcontext);
} }
default: default:
return -EINVAL; return -EINVAL;

View file

@ -24,26 +24,6 @@
#include "context.h" #include "context.h"
#include "policydb.h" #include "policydb.h"
/*
* Copies the MLS range from `src' into `dst'.
*/
static inline int mls_copy_context(struct context *dst,
struct context *src)
{
int l, rc = 0;
/* Copy the MLS range from the source context */
for (l = 0; l < 2; l++) {
dst->range.level[l].sens = src->range.level[l].sens;
rc = ebitmap_cpy(&dst->range.level[l].cat,
&src->range.level[l].cat);
if (rc)
break;
}
return rc;
}
int mls_compute_context_len(struct context *context); int mls_compute_context_len(struct context *context);
void mls_sid_to_context(struct context *context, char **scontext); void mls_sid_to_context(struct context *context, char **scontext);
int mls_context_isvalid(struct policydb *p, struct context *c); int mls_context_isvalid(struct policydb *p, struct context *c);

View file

@ -1916,11 +1916,10 @@ int security_sid_mls_copy(u32 sid, u32 mls_sid, u32 *new_sid)
newcon.user = context1->user; newcon.user = context1->user;
newcon.role = context1->role; newcon.role = context1->role;
newcon.type = context1->type; newcon.type = context1->type;
rc = mls_copy_context(&newcon, context2); rc = mls_context_cpy(&newcon, context2);
if (rc) if (rc)
goto out_unlock; goto out_unlock;
/* Check the validity of the new context. */ /* Check the validity of the new context. */
if (!policydb_context_isvalid(&policydb, &newcon)) { if (!policydb_context_isvalid(&policydb, &newcon)) {
rc = convert_context_handle_invalid_context(&newcon); rc = convert_context_handle_invalid_context(&newcon);