Hash :
f4029cd4
Author :
Date :
2016-04-21T16:37:26
Check XPath exponents for overflow Avoid undefined behavior and wrong results with huge exponents. Found with afl-fuzz and UBSan.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
========================
Expression: 1
Object is a number : 1
========================
Expression: 1+2
Object is a number : 3
========================
Expression: 2*3
Object is a number : 6
========================
Expression: 1+2*3+4
Object is a number : 11
========================
Expression: (1+2)*(3+4)
Object is a number : 21
========================
Expression: 1*1+1*1+1*1+1*1+1*1+1*1+1*1+1*1+1*1+1*1+1*1+1*1+1*1+1*1+1*1+1*1+1*1+1*1+1*1+1*1+1*1
Object is a number : 21
========================
Expression: 0.000000000000000000000000000000000000000000000000001
Object is a number : 1e-51
========================
Expression: -0.000000000000000000000000000000000000000000000000001
Object is a number : -1e-51
========================
Expression: 1e2147483648
Object is a number : Infinity
========================
Expression: 1e4294967296
Object is a number : Infinity
========================
Expression: 1e9223372036854775808
Object is a number : Infinity
========================
Expression: 1e18446744073709551616
Object is a number : Infinity
========================
Expression: 1e-2147483649
Object is a number : 0
========================
Expression: 1e-4294967296
Object is a number : 0
========================
Expression: 1e-9223372036854775809
Object is a number : 0
========================
Expression: 1e-18446744073709551616
Object is a number : 0
========================
Expression: self::-name
Object is empty (NULL)