diff options
| author | Jon duSaint | 2022-07-17 12:13:22 -0700 |
|---|---|---|
| committer | Jon duSaint | 2022-07-17 12:13:22 -0700 |
| commit | c56fb66ca1ce5db7bd28c3383c5a20f1490d856d (patch) | |
| tree | c03fc3809908ff13bb058032a8c5291775111f26 | |
| parent | add1cc6f7522d88038ca80dbb30284551dde1ab4 (diff) | |
reolink: minor input validation improvements
| -rwxr-xr-x | reolink/reolink | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/reolink/reolink b/reolink/reolink index 02e5c02..9e54b30 100755 --- a/reolink/reolink +++ b/reolink/reolink @@ -6,6 +6,7 @@ use strict; use warnings; +use Scalar::Util qw/looks_like_number/; my %default_config = ( socket => '/var/run/reolink.sock', @@ -29,7 +30,7 @@ my %commands = ( interval => { args => 1, server => \&Server::set_interval, - validate => sub { $_[0] >= $min_interval && $_[0] <= $max_interval }, + validate => sub { looks_like_number($_[0]) && $_[0] >= $min_interval && $_[0] <= $max_interval }, help => 'Set snapshot interval' }, snapshot => { @@ -40,7 +41,7 @@ my %commands = ( spooltime => { args => 1, server => \&Server::set_spooltime, - validate => sub { $_[0] > 0 && int($_[0]) == $_[0] }, + validate => sub { looks_like_number ($_[0]) && $_[0] > 0 && int($_[0]) == $_[0] }, help => 'Set spool retention time (in hours)' }, status => { @@ -574,11 +575,12 @@ my @videos = ({index => 3, suffix => '_small'}, # Input format something like: '0530-2130' # Return (start, end) with any leading '0' stripped if range validates, otherwise return empty list sub validate_video_times { - my $time_re = qr/(?:0?\d|1\d|2[0-3])[0-5]\d/; + my $time_re = qr/(?:0?\d|1\d|2[0-3]):?[0-5]\d/; if ($_[0] =~ m/^($time_re)-($time_re)$/) { my ($start, $end) = ($1, $2); $start =~ s/^0//; + $start =~ s/://g; $end =~ s/://g; if ($start < $end) { return ($start, $end); } |
