summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJon duSaint2022-07-17 12:13:22 -0700
committerJon duSaint2022-07-17 12:13:22 -0700
commitc56fb66ca1ce5db7bd28c3383c5a20f1490d856d (patch)
treec03fc3809908ff13bb058032a8c5291775111f26
parentadd1cc6f7522d88038ca80dbb30284551dde1ab4 (diff)

reolink: minor input validation improvements

-rwxr-xr-xreolink/reolink8
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);
}