发现一个fastjson的bug

fastjson版本:fastjson2-2.0.38.jar

有问题的方法:JSONObject.parse(String str);

定位问题位置:JSONReaderUTF16.readFieldName();//该方法用来读取json字符串中的字段名

就是下图中标红的那一行代码,应该是少加了括号,+的优先级高于<<的优先级,我遇到的问题是这样的,字段一:c0=67,c1=89,c2=83;字段二:c0=67,c1=90,c2=83;字段一和字段二计算完之后nameValue0都是等于43515904,后面fastjson又根据nameValue0来判断是否取缓存,最终导致字段二的值覆盖了字段一的值 

下图是fastjson从缓存取值的代码,因为字段一和字段二字段名长度都是11位,并且只有字段名的第二位字符不同,一个是Y(89),一个是Z(90),所以nameValue1的值是相同的,最终导致字段二的值覆盖了字段一的值

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值