From 8e76928c3751a4cd452debaeb9faeacfc37ca460 Mon Sep 17 00:00:00 2001 From: Angelo Naselli Date: Sun, 4 Jan 2015 21:08:12 +0100 Subject: Set to default value all the keys that are undef into configuration file, this should avoid bug #14927 e.g. unpredictable behavior with some wrongly written keys and values, probably on crash or bad closure. --- lib/AdminPanel/rpmdragora.pm | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'lib/AdminPanel') diff --git a/lib/AdminPanel/rpmdragora.pm b/lib/AdminPanel/rpmdragora.pm index 16c91257..09c62d8a 100644 --- a/lib/AdminPanel/rpmdragora.pm +++ b/lib/AdminPanel/rpmdragora.pm @@ -233,9 +233,8 @@ our %config = ( sub readconf() { ${$config{$_}{var}} = $config{$_}{default} foreach keys %config; foreach my $l (MDK::Common::File::cat_($configfile)) { - foreach (keys %config) { - ${$config{$_}{var}} = [ split ' ', $1 ] if $l =~ /^\Q$_\E(.*)/; - } + my ($key, @values) = split ' ', $l; + ${$config{$key}{var}} = \@values if scalar @values; } # special cases: $::rpmdragora_options{'no-confirmation'} = $no_confirmation->[0] if !defined $::rpmdragora_options{'no-confirmation'}; @@ -248,7 +247,9 @@ sub writeconf() { # special case: $no_confirmation->[0] = $::rpmdragora_options{'no-confirmation'}; - MDK::Common::File::output($configfile, map { "$_ " . (ref ${$config{$_}{var}} ? join(' ', @${$config{$_}{var}}) : '') . "\n" } sort keys %config); + my @config_content = map { "$_ " . (ref ${$config{$_}{var}} ? join(' ', @${$config{$_}{var}}) : '') . "\n" } sort keys %config; + MDK::Common::File::output($configfile, @config_content); + print "writeconf done!\n"; } sub getbanner() { -- cgit v1.2.1