More fixes for Centos vala array property bug
authorKevin Wasserman <krwasserman@painless-security.com>
Mon, 9 Dec 2013 21:08:12 +0000 (16:08 -0500)
committerKevin Wasserman <krwasserman@painless-security.com>
Mon, 9 Dec 2013 21:12:40 +0000 (16:12 -0500)
src/moonshot-local-flat-file-store.vala
src/moonshot-server.vala
src/moonshot-webp-parser.vala

index 51d3986..99874fc 100644 (file)
@@ -104,12 +104,15 @@ public class LocalFlatFileStore : Object, IIdentityCardStore {
     public void store_id_cards () {
         var key_file = new KeyFile ();
         foreach (IdCard id_card in this.id_card_list) {
-            string[] rules_patterns = new string[id_card.rules.length];
-            string[] rules_always_conf = new string[id_card.rules.length];
+            /* workaround for Centos vala array property bug: use temp arrays */
+            var rules = id_card.rules;
+            var services = id_card.services;
+            string[] rules_patterns = new string[rules.length];
+            string[] rules_always_conf = new string[rules.length];
             
-            for (int i=0; i<id_card.rules.length; i++) {
-              rules_patterns[i] = id_card.rules[i].pattern;
-              rules_always_conf[i] = id_card.rules[i].always_confirm;
+            for (int i=0; i<rules.length; i++) {
+              rules_patterns[i] = rules[i].pattern;
+              rules_always_conf[i] = rules[i].always_confirm;
             }
 
             key_file.set_string (id_card.display_name, "Issuer", id_card.issuer ?? "");
@@ -119,9 +122,9 @@ public class LocalFlatFileStore : Object, IIdentityCardStore {
               key_file.set_string (id_card.display_name, "Password", id_card.password);
             else
               key_file.set_string (id_card.display_name, "Password", "");
-            key_file.set_string_list (id_card.display_name, "Services", id_card.services ?? {});
+            key_file.set_string_list (id_card.display_name, "Services", services ?? {});
 
-            if (id_card.rules.length > 0) {
+            if (rules.length > 0) {
               key_file.set_string_list (id_card.display_name, "Rules-Patterns", rules_patterns);
               key_file.set_string_list (id_card.display_name, "Rules-AlwaysConfirm", rules_always_conf);
             }
index 6b2f864..f5a086f 100644 (file)
@@ -155,13 +155,15 @@ public class MoonshotServer : Object {
 
       if (rules_patterns.length == rules_always_confirm.length)
       {
-        idcard.rules = new Rule[rules_patterns.length];
+        /* workaround Centos vala array property bug: use temp array */
+        Rule[] rules = new Rule[rules_patterns.length];
          
-        for (int i=0; i<idcard.rules.length; i++)
+        for (int i=0; i<rules.length; i++)
         { 
-          idcard.rules[i].pattern = rules_patterns[i];
-          idcard.rules[i].always_confirm = rules_always_confirm[i];
+          rules[i].pattern = rules_patterns[i];
+          rules[i].always_confirm = rules_always_confirm[i];
         }
+        idcard.rules = rules;
       }
 
       return parent_app.add_identity (idcard, force_flat_file_store!=0);
index a6172e1..582ebbd 100644 (file)
@@ -49,12 +49,15 @@ namespace WebProvisioning
       string[] rules_patterns = {};
       string[] rules_always_confirm = {};
         
-      if (card.rules.length > 0)
+      /* use temp arrays to workaround centos array property bug */
+      var rules = card.rules;
+      var services = card.services;
+      if (rules.length > 0)
       {
         int i = 0;
-        rules_patterns = new string[card.rules.length];
-        rules_always_confirm = new string[card.rules.length];
-        foreach (Rule r in card.rules)
+        rules_patterns = new string[rules.length];
+        rules_always_confirm = new string[rules.length];
+        foreach (Rule r in rules)
         {
           rules_patterns[i] = r.pattern;
           rules_always_confirm[i] = r.always_confirm;
@@ -68,7 +71,7 @@ namespace WebProvisioning
                                 card.issuer,
                                 rules_patterns,
                                 rules_always_confirm,
-                                card.services,
+                                services,
                                 card.trust_anchor.ca_cert,
                                 card.trust_anchor.subject,
                                 card.trust_anchor.subject_alt,