All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paul Moore <pmoore@redhat.com>
To: linux-security-module@vger.kernel.org, eparis@redhat.com,
	selinux@tycho.nsa.gov
Subject: [PATCH 7/9] selinux: cleanup selinux_xfrm_decode_session()
Date: Tue, 25 Jun 2013 17:19:01 -0400	[thread overview]
Message-ID: <20130625211901.5057.4979.stgit@localhost> (raw)
In-Reply-To: <20130625211306.5057.31329.stgit@localhost>

Some basic simplification.

Signed-off-by: Paul Moore <pmoore@redhat.com>
---
 security/selinux/xfrm.c |   23 ++++++++++++-----------
 1 file changed, 12 insertions(+), 11 deletions(-)

diff --git a/security/selinux/xfrm.c b/security/selinux/xfrm.c
index 00801ce..425b9f9 100644
--- a/security/selinux/xfrm.c
+++ b/security/selinux/xfrm.c
@@ -215,34 +215,35 @@ int selinux_xfrm_state_pol_flow_match(struct xfrm_state *x,
  */
 int selinux_xfrm_decode_session(struct sk_buff *skb, u32 *sid, int ckall)
 {
+	u32 sid_session = SECSID_NULL;
 	struct sec_path *sp;
 
-	*sid = SECSID_NULL;
-
 	if (skb == NULL)
-		return 0;
+		goto out;
 
 	sp = skb->sp;
 	if (sp) {
-		int i, sid_set = 0;
+		int i;
 
-		for (i = sp->len-1; i >= 0; i--) {
+		for (i = sp->len - 1; i >= 0; i--) {
 			struct xfrm_state *x = sp->xvec[i];
 			if (selinux_authorizable_xfrm(x)) {
 				struct xfrm_sec_ctx *ctx = x->security;
 
-				if (!sid_set) {
-					*sid = ctx->ctx_sid;
-					sid_set = 1;
-
+				if (sid_session == SECSID_NULL) {
+					sid_session = ctx->ctx_sid;
 					if (!ckall)
-						break;
-				} else if (*sid != ctx->ctx_sid)
+						goto out;
+				} else if (sid_session != ctx->ctx_sid) {
+					*sid = SECSID_NULL;
 					return -EINVAL;
+				}
 			}
 		}
 	}
 
+out:
+	*sid = sid_session;
 	return 0;
 }
 


--
This message was distributed to subscribers of the selinux mailing list.
If you no longer wish to subscribe, send mail to majordomo@tycho.nsa.gov with
the words "unsubscribe selinux" without quotes as the message.

  parent reply	other threads:[~2013-06-25 21:19 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-06-25 21:18 [PATCH 0/9] Labeled networking patches for 3.11 Paul Moore
2013-06-25 21:18 ` [PATCH 1/9] selinux: fix problems in netnode when BUG() is compiled out Paul Moore
2013-06-25 21:18 ` [PATCH 2/9] lsm: split the xfrm_state_alloc_security() hook implementation Paul Moore
2013-06-25 21:18 ` [PATCH 3/9] selinux: cleanup and consolidate the XFRM alloc/clone/delete/free code Paul Moore
2013-06-25 21:18 ` [PATCH 4/9] selinux: cleanup selinux_xfrm_policy_lookup() and selinux_xfrm_state_pol_flow_match() Paul Moore
2013-06-25 21:18 ` [PATCH 5/9] selinux: cleanup selinux_xfrm_sock_rcv_skb() and selinux_xfrm_postroute_last() Paul Moore
2013-06-25 21:18 ` [PATCH 6/9] selinux: cleanup some comment and whitespace issues in the XFRM code Paul Moore
2013-06-25 21:19 ` Paul Moore [this message]
2013-06-25 21:19 ` [PATCH 8/9] selinux: cleanup the XFRM header Paul Moore
2013-06-25 21:19 ` [PATCH 9/9] selinux: remove the BUG_ON() from selinux_skb_xfrm_sid() Paul Moore
2013-06-25 23:53 ` [PATCH 0/9] Labeled networking patches for 3.11 Casey Schaufler
2013-06-26 13:52   ` Paul Moore

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20130625211901.5057.4979.stgit@localhost \
    --to=pmoore@redhat.com \
    --cc=eparis@redhat.com \
    --cc=linux-security-module@vger.kernel.org \
    --cc=selinux@tycho.nsa.gov \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.