Hi everyone,

I want to take another stab at TINKERPOP-2948 with the upgrade to Jackson 2.15. 
There are some breaking changes which must be noted here. Jackson 2.15 
introduces max token size limits for parsing string and numeric literals. There 
is also a new limit on JSON nesting depth in Jackson. The default values for 
these in Jackson are 20M chars for strings, 1000 chars for numbers, and a max 
nesting depth of 1000.

My proposal is that we set our own default limits in TinkerPop such that we do 
not reasonably expect any users to exceed the defaults. The only Jackson 
default that concerns me in this regard is the max number length as it is 
already exceeded by one of our tests 
(g_withSackXBigInteger_TEN_powX1000X_assignX_V_localXoutXknowsX_barrierXnormSackXX_inXknowsX_barrier_sack).
 My suggestion is to set the TinkerPop default limit as 10 000 chars for 
numbers and assume the other defaults from Jackson.

Further I would suggest we add config options such as “maxJsonStringLength”, 
“maxJsonNumberLength”, and “maxJsonNestingDepth” to both the Java driver and 
server so that it is possible for users to overcome these limits if needed.

Since this change is security motivated and the impact to users is minimal, I 
would suggest we proceed with implementing this change in 3.5-dev.

Regards,

Cole Greer

Reply via email to