Merge pull request #24 from pelletier/pelletier/integer_overflow
Int overflow in queryparser
diff --git a/match_test.go b/match_test.go
index c594eb5..fc2adc6 100644
--- a/match_test.go
+++ b/match_test.go
@@ -2,7 +2,6 @@
import (
"fmt"
- "math"
"testing"
)
@@ -110,7 +109,7 @@
assertPath(t,
"$[123:]",
buildPath(
- newMatchSliceFn(123, math.MaxInt64, 1),
+ newMatchSliceFn(123, MaxInt, 1),
))
}
@@ -134,7 +133,7 @@
assertPath(t,
"$[123::7]",
buildPath(
- newMatchSliceFn(123, math.MaxInt64, 7),
+ newMatchSliceFn(123, MaxInt, 7),
))
}
@@ -150,7 +149,7 @@
assertPath(t,
"$[::7]",
buildPath(
- newMatchSliceFn(0, math.MaxInt64, 7),
+ newMatchSliceFn(0, MaxInt, 7),
))
}
diff --git a/queryparser.go b/queryparser.go
index be6954f..8c0de8d 100644
--- a/queryparser.go
+++ b/queryparser.go
@@ -9,9 +9,10 @@
import (
"fmt"
- "math"
)
+const MaxInt = int(^uint(0) >> 1)
+
type queryParser struct {
flow chan token
tokensBuffer []token
@@ -203,7 +204,7 @@
func (p *queryParser) parseSliceExpr() queryParserStateFn {
// init slice to grab all elements
- start, end, step := 0, math.MaxInt64, 1
+ start, end, step := 0, MaxInt, 1
// parse optional start
tok := p.getToken()