Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c900ff32 authored by Harry Ciao's avatar Harry Ciao Committed by Eric Paris
Browse files

SELinux: Write class field in role_trans_write.



If kernel policy version is >= 26, then write the class field of the
role_trans structure into the binary reprensentation.

Signed-off-by: default avatarHarry Ciao <qingtao.cao@windriver.com>
Acked-by: default avatarStephen Smalley <sds@tycho.nsa.gov>
Signed-off-by: default avatarEric Paris <eparis@redhat.com>
parent 63a312ca
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -2535,8 +2535,9 @@ static int cat_write(void *vkey, void *datum, void *ptr)
	return 0;
}

static int role_trans_write(struct role_trans *r, void *fp)
static int role_trans_write(struct policydb *p, void *fp)
{
	struct role_trans *r = p->role_tr;
	struct role_trans *tr;
	u32 buf[3];
	size_t nel;
@@ -2556,6 +2557,12 @@ static int role_trans_write(struct role_trans *r, void *fp)
		rc = put_entry(buf, sizeof(u32), 3, fp);
		if (rc)
			return rc;
		if (p->policyvers >= POLICYDB_VERSION_ROLETRANS) {
			buf[0] = cpu_to_le32(tr->tclass);
			rc = put_entry(buf, sizeof(u32), 1, fp);
			if (rc)
				return rc;
		}
	}

	return 0;
@@ -3267,7 +3274,7 @@ int policydb_write(struct policydb *p, void *fp)
	if (rc)
		return rc;

	rc = role_trans_write(p->role_tr, fp);
	rc = role_trans_write(p, fp);
	if (rc)
		return rc;