You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit f6fe554
Browse filesBrowse the repository at this point in the historyBrowse files
fix: Close integer validation bypass and query parser differential
Two validation bypasses surfaced in a security review of the request
pipeline:
- checkInteger narrowed numbers with longValue() before bound-checking,
so a fractional Double (4.9) satisfied `type: integer` and a value above
2^64 wrapped past a declared maximum. It now rejects non-integral numbers
and compares the full magnitude, keeping an allocation-free long path for
the common case and falling back to BigDecimal/BigInteger otherwise.
- Query parameters were validated from the already-decoded URI.getQuery()
but delivered to handlers from getRawQuery(), so an encoded separator
(%26) could smuggle a value past a schema constraint. Both paths now
share QueryParams.parse over the raw query, so the value validated is the
value the handler receives.
Adds exploit tests asserting both are rejected.
0 commit comments