afce06c3d3
Using the line ``` * * * * echo "foobar" ``` (notice the missing fifth time field) in a crontab causes gluon-cron to enter an endless loop while parsing it, thus it won't even execute the other, valid crontabs. This is caused by the loop in [line 138] where `begin - min` substracts the unsigned `min` from the signed `begin`. If now `begin` is invalid, `strict_atoi` returns -1 and the loop starts at `(-1)-1=MAX_INT` and runs while `i <= MAX_INT` which is always true. The real culprit lies in [line 134] where exactly this case `begin < min` is checked - but because of the signedness, this check doesn't work as expected either. The easiest solution is to make `min` a signed integer instead of an unsigned one, as we do not require it to be very large and only pass the constants 0 or 1 to it. To avoid other similar problems, this patch makes the input variable `n` a signed integer as well. |
||
---|---|---|
.. | ||
gluon-alfred | ||
gluon-announce | ||
gluon-announced | ||
gluon-autoupdater | ||
gluon-config | ||
gluon-config-mode-autoupdater | ||
gluon-config-mode-contact-info | ||
gluon-config-mode-core | ||
gluon-config-mode-geo-location | ||
gluon-config-mode-hostname | ||
gluon-config-mode-mesh-vpn | ||
gluon-core | ||
gluon-cron | ||
gluon-ebtables | ||
gluon-ebtables-filter-multicast | ||
gluon-ebtables-filter-ra-dhcp | ||
gluon-legacy | ||
gluon-lock-password | ||
gluon-luci-admin | ||
gluon-luci-autoupdater | ||
gluon-luci-portconfig | ||
gluon-luci-private-wifi | ||
gluon-luci-theme | ||
gluon-mesh-batman-adv-14 | ||
gluon-mesh-batman-adv-15 | ||
gluon-mesh-batman-adv-core | ||
gluon-mesh-vpn-fastd | ||
gluon-next-node | ||
gluon-node-info | ||
gluon-radvd | ||
gluon-setup-mode | ||
gluon-simple-tc | ||
gluon-status-page | ||
gluon-wan-dnsmasq |