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 ?? "");
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);
}
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);
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;
card.issuer,
rules_patterns,
rules_always_confirm,
- card.services,
+ services,
card.trust_anchor.ca_cert,
card.trust_anchor.subject,
card.trust_anchor.subject_alt,