[prev in list] [next in list] [prev in thread] [next in thread] 

List:       forgerock-openam-commit
Subject:    [CommitOpenAM] [16150] trunk/policy-agents: OPENAM-7025 CR-8417 Agent4 incorrectly handles the order
From:       noreply () forgerock ! org
Date:       2015-10-13 9:19:21
Message-ID: 20151013091921.8627820C81 () sources2 ! internal ! forgerock ! com
[Download RAW message or body]

[Attachment #2 (text/html)]

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[16150] trunk/policy-agents: OPENAM-7025 CR-8417 Agent4 incorrectly handles \
the order of the login.url list values</title> </head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: \
verdana,arial,helvetica,sans-serif; font-size: 10pt;  } #msg dl a { font-weight: \
bold} #msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: \
bold; } #msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: \
6px; } #logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em \
0; } #logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg \
h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; } \
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; \
} #logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: \
-1.5em; padding-left: 1.5em; } #logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em \
1em 0 1em; background: white;} #logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid \
#fa0; border-bottom: 1px solid #fa0; background: #fff; } #logmsg table th { \
text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted \
#fa0; } #logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: \
0.2em 0.5em; } #logmsg table thead th { text-align: center; border-bottom: 1px solid \
#fa0; } #logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: \
6px; } #patch { width: 100%; }
#patch h4 {font-family: \
verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
 #patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, \
#patch .copfile {border:1px solid #ccc;margin:10px 0;} #patch ins \
{background:#dfd;text-decoration:none;display:block;padding:0 10px;} #patch del \
{background:#fdd;text-decoration:none;display:block;padding:0 10px;} #patch .lines, \
                .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a \
href="http://sources.forgerock.org/changelog/openam/?cs=16150">16150</a></dd> \
<dt>Author</dt> <dd>mareks</dd> <dt>Date</dt> <dd>2015-10-13 10:19:20 +0100 (Tue, 13 \
Oct 2015)</dd> </dl>

<h3>Log Message</h3>
<pre><a href="https://bugster.forgerock.org/jira/browse/OPENAM-7025">OPENAM-7025</a> \
CR-8417 Agent4 incorrectly handles the order of the login.url list values</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkpolicyagentssourceconfig_filec">trunk/policy-agents/source/config_file.c</a></li>
 <li><a href="#trunkpolicyagentssourceconfig_xmlc">trunk/policy-agents/source/config_xml.c</a></li>
 <li><a href="#trunkpolicyagentssourceutilityc">trunk/policy-agents/source/utility.c</a></li>
 <li><a href="#trunkpolicyagentssourceutilityh">trunk/policy-agents/source/utility.h</a></li>
 <li><a href="#trunkpolicyagentsteststest_configc">trunk/policy-agents/tests/test_config.c</a></li>
 </ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkpolicyagentssourceconfig_filec"></a>
<div class="modfile"><h4>Modified: trunk/policy-agents/source/config_file.c (16149 => \
16150)</h4> <pre class="diff"><span>
<span class="info">--- trunk/policy-agents/source/config_file.c	2015-10-12 19:22:00 \
                UTC (rev 16149)
+++ trunk/policy-agents/source/config_file.c	2015-10-13 09:19:20 UTC (rev 16150)
</span><span class="lines">@@ -587,6 +587,7 @@
</span><span class="cx">     update_agent_configuration_ttl(conf);
</span><span class="cx">     update_agent_configuration_audit(conf);
</span><span class="cx">     update_agent_configuration_normalise_map_urls(conf);
</span><ins>+    update_agent_configuration_reorder_map_values(conf);
</ins><span class="cx">     
</span><span class="cx">     return conf;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkpolicyagentssourceconfig_xmlc"></a>
<div class="modfile"><h4>Modified: trunk/policy-agents/source/config_xml.c (16149 => \
16150)</h4> <pre class="diff"><span>
<span class="info">--- trunk/policy-agents/source/config_xml.c	2015-10-12 19:22:00 \
                UTC (rev 16149)
+++ trunk/policy-agents/source/config_xml.c	2015-10-13 09:19:20 UTC (rev 16150)
</span><span class="lines">@@ -584,6 +584,7 @@
</span><span class="cx">     update_agent_configuration_ttl(r);
</span><span class="cx">     update_agent_configuration_audit(r);
</span><span class="cx">     update_agent_configuration_normalise_map_urls(r);
</span><ins>+    update_agent_configuration_reorder_map_values(r);
</ins><span class="cx">     
</span><span class="cx">     return r;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkpolicyagentssourceutilityc"></a>
<div class="modfile"><h4>Modified: trunk/policy-agents/source/utility.c (16149 => \
16150)</h4> <pre class="diff"><span>
<span class="info">--- trunk/policy-agents/source/utility.c	2015-10-12 19:22:00 UTC \
                (rev 16149)
+++ trunk/policy-agents/source/utility.c	2015-10-13 09:19:20 UTC (rev 16150)
</span><span class="lines">@@ -2879,6 +2879,31 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+static int config_map_name_compare(const void *a, const void *b) {
+    int index_a = (int) strtol(((am_config_map_t *) a)-&gt;name, NULL, AM_BASE_TEN);
+    int index_b = (int) strtol(((am_config_map_t *) b)-&gt;name, NULL, AM_BASE_TEN);
+    return (index_a &gt; index_b) - (index_a &lt; index_b);
+}
+
+void update_agent_configuration_reorder_map_values(am_config_t *conf) {
+    if (conf-&gt;login_url_sz &gt; 1 &amp;&amp; conf-&gt;login_url != NULL) {
+        qsort(conf-&gt;login_url, conf-&gt;login_url_sz,
+                sizeof (am_config_map_t), config_map_name_compare);
+    }
+    if (conf-&gt;cdsso_login_map_sz &gt; 1 &amp;&amp; conf-&gt;cdsso_login_map != \
NULL) { +        qsort(conf-&gt;cdsso_login_map, conf-&gt;cdsso_login_map_sz,
+                sizeof (am_config_map_t), config_map_name_compare);
+    }
+    if (conf-&gt;openam_logout_map_sz &gt; 1 &amp;&amp; conf-&gt;openam_logout_map \
!= NULL) { +        qsort(conf-&gt;openam_logout_map, conf-&gt;openam_logout_map_sz,
+                sizeof (am_config_map_t), config_map_name_compare);
+    }
+    if (conf-&gt;cond_login_url_sz &gt; 1 &amp;&amp; conf-&gt;cond_login_url != \
NULL) { +        qsort(conf-&gt;cond_login_url, conf-&gt;cond_login_url_sz,
+                sizeof (am_config_map_t), config_map_name_compare);
+    }
+}
+
</ins><span class="cx"> char *get_global_name(const char *name, int id) {
</span><span class="cx">     static AM_THREAD_LOCAL char out[AM_PATH_SIZE];
</span><span class="cx">     snprintf(out, sizeof(out), &quot;%s_%d&quot;, name, id);
</span></span></pre></div>
<a id="trunkpolicyagentssourceutilityh"></a>
<div class="modfile"><h4>Modified: trunk/policy-agents/source/utility.h (16149 => \
16150)</h4> <pre class="diff"><span>
<span class="info">--- trunk/policy-agents/source/utility.h	2015-10-12 19:22:00 UTC \
                (rev 16149)
+++ trunk/policy-agents/source/utility.h	2015-10-13 09:19:20 UTC (rev 16150)
</span><span class="lines">@@ -316,6 +316,7 @@
</span><span class="cx"> void update_agent_configuration_ttl(am_config_t *c);
</span><span class="cx"> void update_agent_configuration_audit(am_config_t *c);
</span><span class="cx"> void \
update_agent_configuration_normalise_map_urls(am_config_t *c); </span><ins>+void \
update_agent_configuration_reorder_map_values(am_config_t *c); </ins><span \
class="cx">  </span><span class="cx"> char *get_global_name(const char *name, int \
id); </span><span class="cx"> am_bool_t validate_directory_access(const char *path, \
int mask); </span></span></pre></div>
<a id="trunkpolicyagentsteststest_configc"></a>
<div class="modfile"><h4>Modified: trunk/policy-agents/tests/test_config.c (16149 => \
16150)</h4> <pre class="diff"><span>
<span class="info">--- trunk/policy-agents/tests/test_config.c	2015-10-12 19:22:00 \
                UTC (rev 16149)
+++ trunk/policy-agents/tests/test_config.c	2015-10-13 09:19:20 UTC (rev 16150)
</span><span class="lines">@@ -78,3 +78,34 @@
</span><span class="cx">     unlink(path);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void test_config_map_value_reorder(void **state) {
+    am_config_t conf;
+#define MAP_SIZE 3
+    am_config_map_t *map = calloc(MAP_SIZE, sizeof (am_config_map_t));
+    
+    assert_non_null(map);
+    
+    memset(&amp;conf, 0, sizeof (am_config_t));
+    conf.login_url = map;
+    conf.login_url_sz = MAP_SIZE;
+
+    map[0].name = strdup(&quot;2&quot;);
+    map[0].value = strdup(&quot;test 2&quot;);
+    map[1].name = strdup(&quot;10&quot;);
+    map[1].value = strdup(&quot;test 10&quot;);
+    map[2].name = strdup(&quot;0&quot;);
+    map[2].value = strdup(&quot;test 0&quot;);
+
+    update_agent_configuration_reorder_map_values(&amp;conf);
+
+    assert_string_equal(map[2].name, &quot;10&quot;);
+    assert_string_equal(map[2].value, &quot;test 10&quot;);
+
+    free(map[0].name);
+    free(map[0].value);
+    free(map[1].name);
+    free(map[1].value);
+    free(map[2].name);
+    free(map[2].value);
+    free(map);
+}
</ins></span></pre>
</div>
</div>
<div id="footer">Copyright (c) by ForgeRock. All rights reserved.</div>

</body>
</html>



_______________________________________________
CommitOpenAM mailing list
CommitOpenAM@forgerock.org
https://lists.forgerock.org/mailman/listinfo/commitopenam


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic