Fix several minor bugs affecting config file reading.
authorJennifer Richards <jennifer@painless-security.com>
Thu, 13 Oct 2016 22:16:18 +0000 (18:16 -0400)
committerJennifer Richards <jennifer@painless-security.com>
Thu, 13 Oct 2016 22:16:18 +0000 (18:16 -0400)
common/tr_comm.c
common/tr_config.c
common/tr_rp.c

index 677a5b8..1d97f2f 100644 (file)
@@ -804,7 +804,8 @@ TR_COMM_MEMB *tr_comm_table_find_rp_memb(TR_COMM_TABLE *ctab, TR_NAME *realm, TR
 
     if ((0==tr_name_cmp(realm, tr_rp_realm_get_id(rp_realm))) &&
         (0==tr_name_cmp(comm, tr_comm_get_id(tr_comm_memb_get_comm(cur)))) &&
-        (0==tr_name_cmp(origin, tr_comm_memb_get_origin(cur)))) {
+        (((NULL==origin)&&(NULL==tr_comm_memb_get_origin(cur))) ||
+         (0==tr_name_cmp(origin, tr_comm_memb_get_origin(cur))))) {
       return cur;
     }
   }
index 0d862dd..ea9efe9 100644 (file)
@@ -1687,14 +1687,16 @@ static void tr_cfg_parse_comm_rps(TR_CFG *trc, json_t *jrps, TR_COMM *comm, TR_C
 
     /* Add the RP to the community, first see if we have the RP in any community */
     found_rp=tr_rp_realm_lookup(trc->rp_realms, rp_name);
-    if (found_rp!=NULL)
+    if (found_rp!=NULL) {
+      tr_debug("tr_cfg_parse_comm_rps: RP realm %s already exists.", s);
       new_rp=found_rp; /* use it rather than creating a new realm record */
-    else {
+    else {
       new_rp=tr_rp_realm_new(NULL);
       if (new_rp==NULL) {
         tr_err("tr_cfg_parse_comm_rps: unable to allocate RP record for %s in community %.*s.",
                s, tr_comm_get_id(comm)->len, tr_comm_get_id(comm)->buf);
       }
+      tr_debug("tr_cfg_parse_comm_rps: setting name to %s", rp_name->buf);
       tr_rp_realm_set_id(new_rp, rp_name);
       rp_name=NULL; /* rp_name no longer belongs to us */
       tr_rp_realm_add(trc->rp_realms, new_rp);
index afa87fa..e6500c0 100644 (file)
@@ -130,8 +130,8 @@ TR_RP_REALM *tr_rp_realm_lookup(TR_RP_REALM *rp_realms, TR_NAME *rp_name)
     return NULL;
   }
 
-  for (rp = rp_realms; NULL != rp; rp = rp->next) {
-    if (tr_name_cmp(tr_rp_realm_get_id(rp), rp_name))
+  for (rp=rp_realms; NULL!=rp; rp=rp->next) {
+    if (0==tr_name_cmp(tr_rp_realm_get_id(rp), rp_name))
       return rp;
   } 
   return NULL;