GoFuzz无法正常触发crash研究

在GoFuzz测试中,遇到无法触发crash的情况。研究了Fuzz函数return值、panic与return组合、同一block中panic与return的使用,以及panic与Fuzz函数默认return值的影响。结果表明,return值影响fuzz行为,panic后不应有return,Fuzz函数默认返回值必须为1以触发crash。
摘要由CSDN通过智能技术生成

Abstract

在使用gofuzz测试的过程中。
遇到明明很有问题、肯定能触发panic的语料,却没有生成对应的crash。
怀疑自己的使用姿势不对,遂对其进行了研究。本文记录一下实验过程和结果。

为了方便测试,设计了自定义Fuzz函数如下:
panic测试
通过测试panic是否会崩溃,来检查panic和return值之间的相关性。

猜测1: Fuzz函数return值存在特殊含义

为了测试return值对fuzz过程的影响,我删去了panic的设计。
当改变return的返回值时,fuzz的exec(程序执行次数) corpus(进化出的语料) restarts(程序重启次数)发生了如下的变化。

return之间的影响 (无panic)
仅return1
exec+ corpus+ restarts+
仅return 0 
exec+ corpus+ restarts+
仅return -1
exec+ corpus1 restarts+

可以看出在gofuzz中,Fuzz函数的return值有特殊的含义。

  • return 1 : 表示这次测试的样例是好的,成功的,阳性的。请多多使用这个突变分支的样例来测试。
  • return 0 : 表示这次测试样例正常,挺好的。就继续测吧,对后续测试样例的使用没有影响。
  • return -1: 表示这次测试使用的样例不给力,成阴性。在以
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

可爱多多白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值