[FIXED JENKINS-25897] Add range check for H(X-Y) syntax

(cherry picked from commit 9a8329ebfe)
This commit is contained in:
Daniel Beck authored and Oliver Gondža committed 2015-03-02 19:27:07 +01:00
1 parent dd2083aa47
commit 6e67cb9e28
2 files changed
+5 -3

No files matched your search

+1 -1
View File
@@ -110,7 +110,7 @@ throws ANTLRException
}
| ("H" "(")=> "H" "(" s=token "-" e=token ")" ( "/" d=token )?
{
bits = doHash(s,e,d);
bits = doHash(s,e,d,field);
}
| "H" ( "/" d=token )?
{
@@ -96,10 +96,12 @@ abstract class BaseParser extends LLkParser {
int u = UPPER_BOUNDS[field];
if (field==2) u = 28; // day of month can vary depending on month, so to make life simpler, just use [1,28] that's always safe
if (field==4) u = 6; // Both 0 and 7 of day of week are Sunday. For better distribution, limit upper bound to 6
return doHash(LOWER_BOUNDS[field], u, step);
return doHash(LOWER_BOUNDS[field], u, step, field);
}
protected long doHash(int s, int e, int step) throws ANTLRException {
protected long doHash(int s, int e, int step, int field) throws ANTLRException {
rangeCheck(s, field);
rangeCheck(e, field);
if (step > e - s + 1) {
error(Messages.BaseParser_OutOfRange(step, 1, e - s + 1));
throw new AssertionError();