From f0fcf084d7475ba8981b95697d691e88b26364ed Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Thu, 17 May 2012 19:00:04 +0200 Subject: [PATCH] Improve robustness of policy matching The 'Session_policy' helper could not cope well with configurations that contain nodes of a type other than ''. This patch improves the policy matching by skipping non-policy nodes. --- os/include/os/session_policy.h | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/os/include/os/session_policy.h b/os/include/os/session_policy.h index 1477626bec..e986930398 100644 --- a/os/include/os/session_policy.h +++ b/os/include/os/session_policy.h @@ -54,8 +54,12 @@ namespace Genode { int best_match = -1; try { unsigned label_len = 0; - Xml_node policy = config()->xml_node().sub_node("policy"); - for (int i = 0;; i++, policy = policy.next("policy")) { + Xml_node policy = config()->xml_node().sub_node(); + + for (int i = 0;; i++, policy = policy.next()) { + + if (!policy.has_type("policy")) + continue; /* label attribtute from policy node */ char policy_label[LABEL_LEN]; @@ -63,7 +67,8 @@ namespace Genode { sizeof(policy_label)); if (!_label_matches(session_label, policy_label) - || strlen(policy_label) < label_len) continue; + || strlen(policy_label) < label_len) + continue; label_len = strlen(policy_label); best_match = i;