]> git.proxmox.com Git - pve-common.git/commitdiff
trim event and check if empty
authorDominik Csapak <d.csapak@proxmox.com>
Tue, 13 Jun 2017 09:25:33 +0000 (11:25 +0200)
committerDietmar Maurer <dietmar@proxmox.com>
Tue, 13 Jun 2017 09:36:11 +0000 (11:36 +0200)
give a meaningful error if it is empty and disallow it instead of having
an implicit default (the default should be set by the component using
the calendarevent, not the calendarevent itself)

also add regression tests

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
src/PVE/CalendarEvent.pm
test/calendar_event_test.pl

index a053f389d5c3b1ed7cdf862174e362a7dfde116f..b27e9684e23a067b0602f2473336240425928c44 100644 (file)
@@ -5,6 +5,7 @@ use warnings;
 use Data::Dumper;
 use Time::Local;
 use PVE::JSONSchema;
+use PVE::Tools qw(trim);
 
 # Note: This class implements a parser/utils for systemd like calender exents
 # Date specification is currently not implemented
@@ -36,6 +37,12 @@ sub pve_verify_calendar_event {
 sub parse_calendar_event {
     my ($event) = @_;
 
+    $event = trim($event);
+
+    if ($event eq '') {
+       die "unable to parse calendar event - event is empty\n";
+    }
+
     my $parse_single_timespec = sub {
        my ($p, $max, $matchall_ref, $res_hash) = @_;
 
index 9c2bf46075acc316553e57c50773129e19a3880c..54162551912f93bd05fc14989f88bd8d239c290b 100755 (executable)
@@ -145,6 +145,18 @@ my $tests = [
      '0..80',
      { error => "range end '80' out of range" },
     ],
+    [
+     ' mon 0 0 0',
+     { error => "unable to parse calendar event - unused parts" },
+    ],
+    [
+     '',
+     { error => "unable to parse calendar event - event is empty" },
+    ],
+    [
+     ' mon 0 0',
+     { error => "unable to parse calendar event - unused parts" },
+    ],
 ];
 
 foreach my $test (@$tests) {