Skip to content

Commit 816cee7

Browse files
committed
improved cron validation
1 parent 6628a9b commit 816cee7

File tree

1 file changed

+63
-0
lines changed

1 file changed

+63
-0
lines changed

func/shared.func

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,64 @@ format_validation() {
263263
fi
264264
}
265265

266+
# Define minute/hour/day/month validator
267+
format_mhd() {
268+
val="$1"
269+
digit=$val
270+
limit=60
271+
272+
if [ "$var" = 'day' ]; then
273+
limit=31
274+
fi
275+
if [ "$var" = 'month' ]; then
276+
limit=12
277+
fi
278+
if [ "$var" = 'wday' ]; then
279+
limit=7
280+
fi
281+
282+
letters=$(echo "$val"|grep -c "[a-Z]")
283+
lslash=$(echo "$val"| grep "^/")
284+
if [ -z "$val" ] || [ 0 -ne "$letters" ] || [ -n "$lslash" ]; then
285+
echo "Error: $var is out of range"
286+
log_event 'debug' "$E_INVALID $V_EVENT"
287+
exit $E_INVALID
288+
fi
289+
290+
special_chars=$(echo "$val" | \
291+
grep -c "[!|@|#|$|^|&|(|)|+|=|{|}|:|,|.|<|>|?|\|\"|'|;|%| ]" )
292+
if [[ 0 -ne "$special_chars" ]] || [ 5 -le ${#val} ]; then
293+
echo "Error: $var is out of range"
294+
log_event 'debug' "$E_INVALID $V_EVENT"
295+
exit $E_INVALID
296+
fi
297+
298+
star=$(echo "$val" |grep '*')
299+
if [ ! -z "$star" ]; then
300+
slash=$(echo $val |grep "^*/")
301+
if [ "$val" != '*' ] && [ -z "$slash" ]; then
302+
echo "Error: $var is out of range"
303+
log_event 'debug' "$E_INVALID $V_EVENT"
304+
exit $E_INVALID
305+
else
306+
if [ -n "$slash" ]; then
307+
digit=$(echo $val | cut -f 2 -d / )
308+
fi
309+
if [ "$val" = '*' ]; then
310+
digit=0
311+
fi
312+
fi
313+
fi
314+
315+
if [ "$limit" -lt "$digit" ]; then
316+
echo "Error: $var is out of range"
317+
log_event 'debug' "$E_INVALID $V_EVENT"
318+
exit $E_INVALID
319+
fi
320+
}
321+
322+
323+
266324
# Defining format_ext function
267325
format_ext() {
268326
val="$1"
@@ -313,6 +371,7 @@ format_validation() {
313371
ssl) format_usr "$v" ;;
314372
domain) format_dom "$v" ;;
315373
database) format_db "$v" ;;
374+
day) format_mhd "$v" ;;
316375
db_user) format_dbu "$v" ;;
317376
dvalue) format_dvl "$v" ;;
318377
fname) format_usr "$v" ;;
@@ -328,6 +387,7 @@ format_validation() {
328387
ns8) format_dom "$v" ;;
329388
email) format_eml "$v" ;;
330389
extentions) format_ext "$v" ;;
390+
hour) format_mhd "$v" ;;
331391
host) format_usr "$v" ;;
332392
interface) format_ifc "$v" ;;
333393
ip) format_ip "$v" ;;
@@ -337,6 +397,8 @@ format_validation() {
337397
mask) format_ip "$v" ;;
338398
max_usr) format_int "$v" ;;
339399
max_db) format_int "$v" ;;
400+
min) format_mhd "$v" ;;
401+
month) format_mhd "$v" ;;
340402
lname) format_usr "$v" ;;
341403
owner) format_usr "$v" ;;
342404
package) format_usr "$v" ;;
@@ -349,6 +411,7 @@ format_validation() {
349411
template) format_usr "$v" ;;
350412
ttl) format_int "$v" ;;
351413
user) format_usr "$v" ;;
414+
wday) format_mhd "$v" ;;
352415
esac
353416
done
354417
}

0 commit comments

Comments
 (0)