From 92cfbb45c330eae5b1c2bf6a3c24a80a18f1747e Mon Sep 17 00:00:00 2001 From: Yury Popov Date: Mon, 27 Mar 2017 09:20:08 +0300 Subject: [PATCH] Cron fixes (#1884) * Fix cron values >32 * Fix crontab description items order --- app/modules/cron.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/modules/cron.c b/app/modules/cron.c index 0c8af2e8..8d93b6af 100644 --- a/app/modules/cron.c +++ b/app/modules/cron.c @@ -53,7 +53,7 @@ static uint64_t lcron_parsepart(lua_State *L, char *str, char **end, uint8_t min if (val < min || val > max) { return luaL_error(L, "invalid spec (val %d out of range %d..%d)", val, min, max); } - res |= (1 << (val - min)); + res |= (uint64_t)1 << (val - min); if (**end != ',') break; str = *end + 1; } @@ -67,11 +67,11 @@ static int lcron_parsedesc(lua_State *L, char *str, struct cronent_desc *desc) { if (*s != ' ') return luaL_error(L, "invalid spec (separator @%d)", s - str); desc->hour = lcron_parsepart(L, s + 1, &s, 0, 23); if (*s != ' ') return luaL_error(L, "invalid spec (separator @%d)", s - str); - desc->dow = lcron_parsepart(L, s + 1, &s, 0, 6); - if (*s != ' ') return luaL_error(L, "invalid spec (separator @%d)", s - str); desc->dom = lcron_parsepart(L, s + 1, &s, 1, 31); if (*s != ' ') return luaL_error(L, "invalid spec (separator @%d)", s - str); desc->mon = lcron_parsepart(L, s + 1, &s, 1, 12); + if (*s != ' ') return luaL_error(L, "invalid spec (separator @%d)", s - str); + desc->dow = lcron_parsepart(L, s + 1, &s, 0, 6); if (*s != 0) return luaL_error(L, "invalid spec (trailing @%d)", s - str); return 0; }